1つのタイプの解決に問題があります。私はウリとブールを取るサービスを持っています。ユニティのレジスタタイプ
Foo(Uri uri, bool bar)
私が試してみてはFoo Unityは私がRegisterInstanceになく、無駄にしようとした
The type Uri has multiple constructors of length 2. Unable to disambiguate
を文句解決します。
私には何が欠けていますか?
1つのタイプの解決に問題があります。私はウリとブールを取るサービスを持っています。ユニティのレジスタタイプ
Foo(Uri uri, bool bar)
私が試してみてはFoo Unityは私がRegisterInstanceになく、無駄にしようとした
The type Uri has multiple constructors of length 2. Unable to disambiguate
を文句解決します。
私には何が欠けていますか?
クラスに2つの引数を取るコンストラクタが複数ある場合は、Unityがどちらを使うべきかを指定する必要があります。
コンストラクタが文字列、bool、またはURIのようなプリミティブな引数を取る場合は、これらの引数にマッピングを登録するか、解決時に提供する必要があります。
container.RegisterType<Foo>(new InjectionConstructor(new Uri("http://bla.com"), false));
または
Foo foo = container.Resolve<Foo>(new ParameterOverride("uri", new Uri("...")), new ParameterOverride("bar", false)));
動作するはずです。 2番目のアプローチはお勧めしませんが。 DIコンテナはそのように使用すべきではありません。
Unityによってwcfクライアントを初期化するときに同じエラーメッセージが表示されました。私の設定でUnityを設定しているので、解決策はパラメータなしでコンストラクタを呼び出すために <register xxx> <constructor></constructor> </register>
です。