3

重複の可能性:
UnityIOCコンテナーと同じインターフェイスの異なるインスタンスを解決する方法

以下に示す同じインターフェイスを実装する2つのパラメーターを持つコントローラーコンストラクターがあります。以下に示すように、これらのタイプをUnityに登録しようとしましたが、問題が発生しました。

コントローラーコンストラクター

public ControlController(IAdapter daveAdapter, IAdapter bobAdapter)
{
        DaveAdapter = daveAdapter;
        BobAdapter = bobAdapter;
}

Unity登録

 container
.RegisterType<IAdapter, DaveAdapter>()
.RegisterType<IAdapter, BobAdapter>()

コントローラが構築されると、両方のアダプタが1つのDaveと1つのBobではなくDaveAdapterとして解決されます。コントローラーが各タイプのアダプターを持つように、2つのアダプターを区別するようにUnityに指示するにはどうすればよいですか?

4

1 に答える 1

3

InjectionConstructorコントローラの登録で ResolvedParameterオブジェクトを使用できます。

.RegisterType<IAdapter, DaveAdapter>()
.RegisterType<IAdapter, BobAdapter>("Bob")

.RegisterType<ControlController, ControlController>(
    new InjectionConstructor(
      new ResolvedParameter<IAdapter>(),
      new ResolvedParameter<IAdapter>("Bob")
))
于 2012-10-18T13:47:23.733 に答える