0

私はXamarin AndroidプロジェクトソリューションでDependency Injectionを使用する方法がわかりません。現在、私のAndroidソリューションは別のクラスライブラリソリューションへの参照を保持しています。私は自分のサービス層でUnityを使用し、WebApiConfig.csを介してコンテナを登録しました。 私の質問は、起動時に実行するためにAndroid側でUnityを使用する方法、コードが含まれていれば感謝します。私はAndroidの主な活動を通してコンテナを新しくしたくない。コンテナがプロセスの背後に登録されるようにします。つまり、AppStartまたはGlobal asaxがMVCアプリケーションのためにそれを行います。 Android用の方法はありますか?また、私はメインアクティビティに気づき、コンストラクタを作成できません。私はこれは不可能だと思いますが、クラスライブラリソリューションにオブジェクトリファレンスを保持する方法はありますか?私がしようとした例:依存性注入Android

private IExample _ex; 

MainActivity(IExample ex){ 
_ex = ex; //depedency Injection rather than newing it up 
} 

public void DoSomething(){ 
_ex.HelloWorld(); 
} 

属性を使って行う方法はありますか?また、私のレイヤーごとに、現在のソリューションの依存関係を解決するためにコンテナをインストールして作成する必要がありますか?または、DDDアーキテクチャが外側から内側に行くにつれて、各レイヤーのすべての依存関係を解決するアンドロイドのコンテナを使用できますか?

// Must include this attribute so that Android knows we want to use this as our Application implementation 
[Application(Icon = "@drawable/Icon", Label = "@string/ApplicationName")] 
public class MyApplication : Application 
{ 
    public override void OnCreate() 
    { 
     base.OnCreate(); 

     // Do your DI initialization/registration here 
    } 
} 

私はあなたがメインの活動にコンストラクタを作成することができないの意味を正確にわからない:あなたがそうのようなカスタムアプリケーションの実装を作成することができ、起動時にDIを設定するという点で

答えて

0

。あなたは、あなたが気に入っているアクティビティーのコンストラクターを作成できます。あなたはOnCreateに初期化ロジックを置く傾向があるので、常にそれを見るとは限りません。

+0

こんにちは、ありがとう、プロンプトメッセージです。実装でカスタムアプリケーションを作成したら、別のクラスまたはメインアクティビティから初期化せずに、実行時にカスタムアプリケーションを実行しますか? –

+0

あなたがしなければならないのは、カスタムアプリケーションの実装としてクラスを使用することをAndroidに伝えることだけです。 AndroidManifest.xmlファイルで手動で指定するか、[Application ...]属性を使用してコンパイラに指示します。これを実行すると、明示的に呼び出さなくても、オペレーティングシステムは起動時に自動的にOnCreateメソッドを呼び出します。 DIセットアップ/登録のような「アプリケーション全体」の初期化を行うことができます。 – EJoshuaS