'约定'部分只是命名约定。
即它只是在寻找一些能够用于提供IMvxPlugin:使用规则 '增加 “的WindowsPhone”'
Cirrious.MvvmCross.Plugins.Visibility
获得:
Cirrious.MvvmCross.Plugins.Visibility.WindowsPhone.Plugin
如果WP8规则的改变。 ..然后我们可以只改变约定https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.WindowsPhone/Platform/MvxBaseWindowsPhoneSetup.cs
虽然WP8是还是不清楚......你可以在你使用Setup.cs代码一样做自己的项目:
protected override IMvxPluginManager CreatePluginManager()
{
var toReturn = new MvxLoaderBasedPluginManager();
var registry = new MvxLoaderPluginRegistry(".WP7",toReturn.Loaders);
AddPluginsLoaders(registry);
return toReturn;
}
,或者你甚至可以混合和匹配的版本 - 即你可以这样做:
protected override IMvxPluginManager CreatePluginManager()
{
var toReturn = new MvxLoaderBasedPluginManager();
var sharedRegistry = new MvxLoaderPluginRegistry(".WindowsPhone",toReturn.Loaders);
sharedRegistry.AddConventionBasedPlugin<SharedP1>();
sharedRegistry.AddConventionBasedPlugin<SharedP1>();
sharedRegistry.AddConventionBasedPlugin<SharedP3>();
var wp7Registry = new MvxLoaderPluginRegistry(".WP7",toReturn.Loaders);
wp7Registry.AddConventionBasedPlugin<WP7P1>();
wp7Registry.AddConventionBasedPlugin<WP7P2>();
return toReturn;
}
最后,没有什么强迫你使用约定的话 - 你总是可以只提供自己的插件加载方法提供Func<IMvxPlugin>
- 例如:
protected override IMvxPluginManager CreatePluginManager()
{
var toReturn = new MvxLoaderBasedPluginManager();
toReturn.Loaders.Add('Cirrious.MvvmCross.Plugins.Visibility.WindowsPhone.Plugin',() =>
{
// do whatever code you want to do...
return thePlugin;
});
return toReturn;
}
你可以混合和匹配这些技术
或者,你可以提供一个完全新的实施IMvxPluginManager的,如果你想。接口就是:
public interface IMvxPluginManager
{
bool IsPluginLoaded<T>() where T : IMvxPluginLoader;
void EnsureLoaded<T>() where T : IMvxPluginLoader;
}
所以,你可以,例如提供了一个非常简单的经理像
public class SimplePluginManager : IMvxPluginManager
{
public SimplePluginManager()
{
// load the plugins your app needs here!
Cirrious.MvvmCross.Plugins.Visibility.Wp7.Plugin.Load();
Cirrious.MvvmCross.Plugins.Color.WindowsPhone.Plugin.Load();
}
public bool IsPluginLoaded<T>() where T : IMvxPluginLoader
{
return true;
}
public void EnsureLoaded<T>() where T : IMvxPluginLoader
{
}
}
这个问题似乎因为我得到一个新的错误来解决。我会挖掘找到一个解决方案。感谢您的快速帮助。 – Alphapage