2009-06-29 65 views
12

我有一個類,它的接口在構造的數組:城堡溫莎不能注入接口類型的數組

public class Foo<T1, T2> : IFoo<T1, T2> 
{ 
    public Foo(IBar[] bars) 
    { 
     ... 
    } 
} 

我的容器登記看起來如下:

container.Register(AllTypes.Pick().FromAssemblyNamed("...") 
        .WithService.FirstInterface()); 
container.AddComponent("foo", typeof(IFoo<,>), typeof(Foo<,>)); 

我有幾個IBar的實現,並且容器可以明確地定位它們,因爲調用ServiceLocator.Current.GetAllInstances<IBar>()可以正常工作。

但是,如果我嘗試獲取IFoo的實例,它會拋出一個異常,說它無法滿足「未註冊」的異常...「。

如果我改變構造函數採取IBar的單個實例它工作正常。

任何想法?

回答

23

添加ArrayResolver:

container.Kernel.Resolver.AddSubResolver(new ArrayResolver(container.Kernel)); 
+1

又見溫莎FAQ:http://using.castleproject.org/display/IoC/FAQ – 2010-01-24 16:26:15