2011-12-29 17 views
3

私は、依存関係としてクラスがあります。私は、依存関係のユニティFrameworkと複数のコンストラクタインジェクション

解像度が失敗したとして、私は、エラーメッセージが表示されました別のクラスにそれを注入しようとしたとき

public class Foo { 
    public Foo() { 
     // default constructor 
    } 

    public Foo(IMyInterface my) { 
    } 
} 

を。 ..... InvalidOperationException - 現在の型IMyInterfaceはインタフェースであり、 を構築することはできません。型マッピングがありませんか?

IMyInterfaceは、他の目的でこのコンストラクタを予約しているため、具体的な型は全く登録していません。

私が理解しているように、Unityは解決しなければならないことを明確に指示しなければ、最初にパラメータを最小限にしてコンストラクタを解決しようとします。したがって、デフォルトのコンストラクタを初期化しようとします。

InjectionConstructorAttribute以外にも、Unityに2番目のコンストラクタを無視するように指示するスマートな方法はありますか?

答えて

3

これは逆です - UnityはまずMOSTパラメータでコンストラクタを解決しようとします。コンストラクタの1つにInjectionConstructor属性を使用して、このコンストラクタを他のものより優先させることができます。あなたがゼロパラメータのコンストラクタが使用されなければならない構成で示すことができ

+0

は私の間違ったメモリを固定いただきありがとうございます。 – hardywang

2

<register type="IFoo" mapTo="Foo"> 
    <lifetime type="external"/> 
    <constructor /> 
</register> 
関連する問題