'約定'部分只是命名約定。
即它只是在尋找一些能夠用於提供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