2016-06-15 42 views
1

私の質問はthis questionに似ています。しかし、重要な違いがあります。私はUnity Containerを使用しています。問題は、同じコンストラクタでインターフェイスの2つのインスタンスを使用する必要があることです。これらのインスタンスは、同じインプリメンテーションと異なるインプリメンテーションからのものでもよい。コンストラクタの簡略版は以下の通りです。Unityと同じコンストラクタのインターフェイスの複数の実装

public SomeService(IMyInterface instance1, IMyInterface instance2) : ISomeService 

前述の質問では、さまざまな実装が異なるクラスで使用されていました。しかし私の場合、私は1つのクラスで分離が必要です。

これはUnityで可能ですか?そうでない場合は、この機能を持つ最近のコンテナがありますか?

答えて

1

あなたが名前の登録や、このようなInjectionConstructor使用することができます:IMO

container.RegisterType<IMyInterface, Impl1>("Impl1"); 
container.RegisterType<IMyInterface, Impl2>("Impl2"); 
container.RegisterType<ISomeService, SomeService>(
    new InjectionConstructor(
     new ResolvedParameter<IMyInterface>("Impl1"), 
     new ResolvedParameter<IMyInterface>("Impl2"))); 

var service = container.Resolve<ISomeService>(); 

を、DIコンテナを使用し、代わりにあなたがここに持っているもののような「複雑な」オブジェクトのグラフを持っているときPure DIを使用しない方が良いです。詳細は、my article hereを参照してください。

関連する問題