gpt4 book ai didi

c# - MvvmCross vnext : merge plugins with monodroid

转载 作者:太空狗 更新时间:2023-10-29 23:01:00 24 4
gpt4 key购买 nike

我正在尝试将插件库项目合并为一个项目(例如,Location + PhoneCallTask​​)。它与 wp7 完美配合,但我在 monodroid 中遇到未处理的异常:

Could not load file or assembly 'Cirrious.MvvmCross.Plugins.Location.Droid.dll'

当然,位置插件在合并库“Cirrious.MvvmCross.Plugins.Droid.dll”中被引用。

有没有办法指向合并后的库路径?

最佳答案

更全面地考虑了您的问题...

我仍然不完全确定合并插件是什么,但我认为您看到的问题必须归结为 MvvmCross-MonoDroid 使用文件约定加载插件的方式,而所有其他平台都强制用户提供每个插件的显式工厂方法。

造成这种差异的原因是因为文件约定是(IMO)执行此操作的最佳方式......但是所有其他平台都以安全和/或编译问题的方式存在,这意味着必须使用替代机制...

您要做的最简单的事情可能是将您的 MonoDroid 应用程序的设置切换为也使用加载程序约定。

为此:

  • 在 Setup.cs 中将 CreatePluginManager() 重写为:

    protected override IMvxPluginManager CreatePluginManager()
    {
    var toReturn = new MvxLoaderBasedPluginManager();
    var registry = new MvxLoaderPluginRegistry(".Droid", toReturn.Loaders);
    AddPluginsLoaders(registry);
    return toReturn;
    }

然后提供一个 AddPluginsLoaders() 实现,例如:

    protected virtual void AddPluginsLoaders(Cirrious.MvvmCross.Platform.MvxLoaderPluginRegistry loaders)
{
loaders.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.Visibility.Droid.Plugin>();
loaders.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.Location.Droid.Plugin>();
loaders.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.Phone.Droid.Plugin>();
loaders.AddConventionalPlugin<AlphaPage.MvvmCross.Plugins.Mega.Droid.Plugin>();
// etc
}

关于c# - MvvmCross vnext : merge plugins with monodroid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com