2016-04-22 9 views
1

MvxLoaderPluginRegistry.AddConventionalPluginがMvvmCross 4.1.4に更新された後に不足しています。更新後のプラグインをロードする方法MvvmCrossへの更新後にMvxLoaderPluginRegistry.AddConventionalPluginが見つかりません4.1.4

https://github.com/MvvmCross/MvvmCross/blob/a45cb515844f935b8b8ca04cf905342665a53fb9/MvvmCross/Platform/Platform/Plugins/MvxLoaderPluginRegistry.cs

:今、私は別の署名を持っているセットまたはRegister方法を見ることができますか?

+1

注:https://github.com/MvvmCross/MvvmCross/pull/1290 – Martijn00

答えて

3

プラグインはBootstrappersでロードされます。これらのブートストラップは、MvvmCrossプラグインを使用して、フォルダBootstrapに自動的にインストールされます。 $rootnamespaceは、NuGet経由でプラグインをインストールするときに、ターゲットプロジェクトのルート名前空間に置き換えられます。

iOSのブートストラップMvxLoaderPluginBootstrapActionから

継承します。

namespace $rootnamespace$.Bootstrap 
{ 
    public class BlePluginBootstrap 
     : MvxLoaderPluginBootstrapAction<MvvmCross.Plugins.BLE.PluginLoader, MvvmCross.Plugins.BLE.iOS.Plugin> 
    { 
    } 
} 

AndroidのブートストラップMvxPluginBootstrapActionから

継承します。

namespace $rootnamespace$.Bootstrap 
{ 
    public class BlePluginBootstrap 
     : MvxPluginBootstrapAction<MvvmCross.Plugins.BLE.PluginLoader> 
    { 
    } 
} 

bootstrappers of installed plugins

プラグインローダー

public class PluginLoader 
    : IMvxPluginLoader 
{ 
    public static readonly PluginLoader Instance = new PluginLoader(); 

    public void EnsureLoaded() 
    { 
     var manager = Mvx.Resolve<IMvxPluginManager>(); 
     manager.EnsurePlatformAdaptionLoaded<PluginLoader>(); 
    } 
} 

プラグイン

各プラグインは、インタフェースの実装を登録し、そのプラットフォーム固有Pluginクラスを有しています。

namespace MvvmCross.Plugins.BLE.Droid 
{ 
    public class Plugin 
    : IMvxPlugin 
    { 
     public void Load() 
     { 
      Mvx.LazyConstructAndRegisterSingleton<IAdapter>(() => new Adapter()); 
     } 
    } 
} 
+0

はブートストラップがあったが、コードは「wasn、ありがとうございました働いている。これは役に立ちました:https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins –

3

本当です。 MvxLoaderPluginRegistryには、MvvmCross 4.1.4ではこのようなメソッドがありません。

プラグインを読み込むためにBootstrapクラスを使用することをお勧めします。 MvvmCross exampleをチェックすると、従来型アプローチと非従来型アプローチの両方をロードする方法を確認できます。

注:あなたは今、すべてのプラットフォーム用のMvxLoaderPluginBootstrapActionを使用することができます(4.1.4前に、このブートストラップは、iOS版/ Macのプラットフォーム上でのみ働いていた)

けれども、あなたはまだロードするためにRegistryを使用したいプラグインを使用すると、プラットフォームを指定する必要がある場合新しいメソッドを使用して、特定のクラス:プラグインレジストリが4.1.4にリファクタリングされていることを

public override AddPluginsLoaders (MvxLoaderPluginRegistry registry) 
{ 
    // Register plugin using types 
    registry.Register<MyPlugin.PluginLoader, MyPlugin.iOS.Plugin>(); 

    // Registeer plugin using factory method 
    registry.Register<MyPlugin.PluginLoader>(() => new MyPlugin.iOS.Plugin()); 
} 

// Don't forget to load these plugins 
public override void LoadPlugins(IMvxPluginManager pluginManager) 
{ 
    pluginManager.EnsurePluginLoaded<MyPlugin.PluginLoader>(); 
    base.LoadPlugins(pluginManager); 
} 
関連する問題