C#学习教程:MvvmCrossvnext:Mergingpluginswithmonodroid,位置插件在“Cirrious.MvvmCross.Plugins.Droid.dll”(组合库)中。有没有办法指向合并的库路径?更全面地考虑你的问题......我仍然不完全确定合并插件是什么,但我认为你看到的问题必须归结为MvvmCross-MonoDroid使用文件约定加载插件的方式,而所有其他平台强制用户为每个插件提供明确的样式工厂方法。造成这种差异的原因是因为文件约定是(IMO)最好的方式......但是所有其他平台都将安全和/或编译问题置于必须使用替代机制的方式......最简单你要做的事情可能是一个设置来切换MonoDroid应用程序以使用加载器约定。要做到这一点:然后提供一个AddPluginsLoaders()实现,例如:loaders.AddConventionalPlugin();loaders.AddConventionalPlugin();loaders.AddConventional();//etc}简短回答:我猜你需要:更长的回答(基于我已有的一些笔记-将很快发布):如果你正在构建一个全新的插件,那么你将:1.创建一个中央共享插件这将是可移植类库——比如AlphaPage.MvvmCross.Plugins.Mega在这个中央共享PCL中,你可以放置任何可用的可移植代码——通常这可能只是一些服务接口定义——例如publicinterfaceIAlphaService{...}和publicinterfaceIPageService{...}然后,您将为插件添加PluginManager,它只会添加以下样板文件:#regionIMvxPluginLoader的实现publicvoidEnsureLoaded(){varmanager=this.GetService();经理.EnsureLoaded();}#endregion}2.创建特定的插件实现对于每个平台,您将实现该插件——例如,您可以实现AlphaPage.MvvmCross.Plugins.Mega.WindowsPhone和AlphaPage.MvvmCross.Plugins.Mega.Droid在每个中,您将实现提供服务的本地类:publicclassMyAlphaService:IAlphaService{...}和publicclassMyPageService:IPageService{...}最后,每个插件都提供了一个样板插件实现://页面注册为类型this.RegisterServiceType();}#endregion}3.插件实例化每个UI客户端都必须初始化插件这是通过为最终UI客户端添加库引用来完成的:3.1WinRT、WindowsPhone和MonoTouch然后,对于WinRT、WindowsPhone和MonoTouch客户端,您还需要在setup.cs中提供一个Loader访问器——例如:protectedoverridevoidAddPluginsLoaders(Cirrious.MvvmCross.Platform.MvxLoaderPluginRegistryloaders){loaders.AddConventionalPlugin();base.AddPluginsLoaders(装载机);请注意,这里使用了约定——因此AlphaPage.MvvmCross.Plugins.Mega.WindowsPhone.Plugin是AlphaPage.MvvmCross。Plugins.Mega.PluginLoader对于实现WindowsPhone插件非常重要。3.2MonoDroid对于MonoDroid客户端,你不需要添加这个设置步骤——因为MonoDroid比其他平台有更少的Assembly.Load限制——而且ao可以从文件加载插件。但要使其工作,程序集名称匹配很重要-如果PluginLoader是AlphaPage.MvvmCross.Plugins.Mega.PluginLoader那么约定将尝试从AlphaPage.MvvmCross.Plugins.Mega.Droid.dll4加载插件.在这个设置之后使用插件服务,应用程序最终应该能够通过以下方式访问插件:5.纯可移植插件步骤。这个例子的Json实现见-https://github.com/slodge/MvvmCross/tree/vnext/Cirrious/Plugins/Json以上就是C#学习教程:MvvmCrossvnext:Mergingpluginswithmonodroidtoshare,如果对大家有用,需要了解更多的C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
