0

Unityに登録したいTypeAとTypeBの2つのタイプがあるとします。TypeBはTypeAに依存しているので、コンストラクターインジェクションを介してTypeAをタイプBにインジェクトしたいと思います。だから私は次のようなものを書き、Unityに解決策をカスケードするのに十分賢くしてもらいたいと思います:

_container.RegisterType<ITypeA, TypeA>();
_container.RegisterType<ITypeB, TypeB>();

UnityにTyp​​eAを解決してTypeBに注入するように指示するにはどうすればよいですか?

設定ファイルを使用すればこれは可能のようですが、プログラムでどのように行うかわかりません。

<type name="typeB" type="ITypeB" mapTo="TypeB">
   <lifetime type="Singleton"/>
   <typeConfig extensionType="...">
      <constructor>
        <param name="typeA" parameterType="ITypeA">
           <dependency/>
        </param>
      </constructor>
   </typeConfig>
</type>

提案を事前に感謝します!


編集:だから、Unityは私のためにこれを処理します。ただし、私の問題は、2つのコンストラクターを持つクラスがあることだと思います。

public TypeB(TypeA typeA)
{
    _x = typeA;
}

public TypeB() : this(Something.Value)
{
}

Unityは、使用するコンストラクターを見つけるのに問題があるようです。最初のコンストラクターは単体テスト用であり、2番目のコンストラクターは実行時に使用する必要があります。Unityはこれに問題を抱えています。

4

1 に答える 1

1

次のようにします。

class TypeA
{
}

class TypeB
{

    [InjectionConstructor]
    public TypeB([Dependency] TypeA typeOfA)
    {

    }
}
于 2009-06-06T13:59:56.920 に答える