12
I有しコンストラクタのインターフェイスの配列をとるクラス:城ウィンザーは、インターフェイスタイプのアレイを注入することができない
container.Register(AllTypes.Pick().FromAssemblyNamed("...")
.WithService.FirstInterface());
container.AddComponent("foo", typeof(IFoo<,>), typeof(Foo<,>));
Iを次のよう
public class Foo<T1, T2> : IFoo<T1, T2>
{
public Foo(IBar[] bars)
{
...
}
}
マイ容器登録が見えますServiceLocator.Current.GetAllInstances<IBar>()
がうまく動作するので、IBarのいくつかの実装があり、コンテナはそれらを確実に見つけることができます。
しかし、私がIFooのインスタンスを取得しようとすると、それは "deoendency ..."を満たすことができないという例外をスローします。
コンストラクタを変更してIBarの単一インスタンスを取得すると、正常に動作します。
アイデア?
はウィンザーのよくある質問も参照してください:http://using.castleproject.org/display/IoC/FAQ –
が、これは代わりに、設定ファイルを介して行うことができますか? –
@Ben:現時点ではありませんが、あなたはuservoiceで提案することができます:http://castle.uservoice.com: "xml configを介してサブリゾルバーを追加" –