「規則」の部分は、単に命名規則です。
つまり、次の IMvxPlugin を提供するものを探しているだけです。
Cirrious.MvvmCross.Plugins.Visibility
ルール「add "WindowsPhone"」を使用して次を取得します。
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
{
}
}