2017-01-19 7 views
0

Xamarin FormsアプリケーションでPrismモジュールを作成しようとしています。私のモジュールには、プラットフォーム固有のコードと、そのためのインターフェイスをとるビューモデルが含まれています。たとえば:Prismモジュールにプラットフォーム固有の実装を登録するには?

ThingModule (PCL) 
ThingModule 
    + Initialize() 
IThing 
ThingView 
ThingViewModel(IThing thing) 

ThingModule.Droid (Android) 
AndroidThingImplementation : IThing 

ThingModule.iOS (iOS) 
iOSThingImplementation : IThing 

私は、モジュールのinitializeメソッドで簡単に十分なナビゲーションのためのビューを登録することができますが、どのように私は(むしろ、アプリ内より)モジュール内のプラットフォーム固有の実装を登録することができますか?

答えて

0

モジュールにプラットフォームの詳細を登録しません。プラットフォーム固有の実際のプロジェクトには、プラットフォーム固有のものを登録します。あなたのモジュールはインターフェイスへの参照を持つだけで、それだけです。 IPlatformInitializerを使用してこれを行うことができます。ここではサンプルを参照してください:

アンドロイド: https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld.Droid/MainActivity.cs#L28

[Activity(Label = "HelloWorld", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     TabLayoutResource = Resource.Layout.tabs; 
     ToolbarResource = Resource.Layout.toolbar; 

     base.OnCreate(bundle); 

     global::Xamarin.Forms.Forms.Init(this, bundle); 
     LoadApplication(new App(new AndroidInitializer())); 
    } 
} 

public class AndroidInitializer : IPlatformInitializer 
{ 
    public void RegisterTypes(IUnityContainer container) 
    { 

    } 
} 

XFプロジェクト: https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld/App.cs#L15

public class App : PrismApplication 
{ 
    public App(IPlatformInitializer initializer = null) : base(initializer) { } 
    ... 
} 
+0

私の目標は、私たちが図書館でライブ作成のモジュールを持つことです。このライブラリを使用する複数のアプリケーションを構築しています。 私は、モジュールの消費者がプラットフォーム固有の実装を登録しなければならないことを覚えておく(または知る必要がない)方法を望んでいました。 アプリを登録するだけで簡単です。ありがとう! – Adam

関連する問題