Unityに登録したいTypeAとTypeBの2つのタイプがあるとします。TypeBはTypeAに依存しているので、コンストラクターインジェクションを介してTypeAをタイプBにインジェクトしたいと思います。だから私は次のようなものを書き、Unityに解決策をカスケードするのに十分賢くしてもらいたいと思います:
_container.RegisterType<ITypeA, TypeA>();
_container.RegisterType<ITypeB, TypeB>();
UnityにTypeAを解決して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はこれに問題を抱えています。