我正在尝试将插件库项目合并为一个(例如,Location + PhoneCallTask)。它与wp7完美配合,但是我收到了monodroid的未处理异常:
当然,在合并的库“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
}