ho una classe che accetta un array di interfacce nel costruttore:Castello di Windsor, non può iniettare una serie di tipi di interfaccia
public class Foo<T1, T2> : IFoo<T1, T2>
{
public Foo(IBar[] bars)
{
...
}
}
mia registrazione contenitore si presenta come segue:
container.Register(AllTypes.Pick().FromAssemblyNamed("...")
.WithService.FirstInterface());
container.AddComponent("foo", typeof(IFoo<,>), typeof(Foo<,>));
I avere diverse implementazioni di IBar e il contenitore può definirle definitivamente, poiché chiamare ServiceLocator.Current.GetAllInstances<IBar>()
funziona correttamente.
Tuttavia, se provo a ottenere un'istanza di IFoo, genera un'eccezione dicendo che non può soddisfare la deoendenza ... "che non è stata registrata".
Se cambio il costruttore per prendere una singola istanza di IBar, funziona correttamente.
Qualche idea?
Vedi anche la FAQ Windsor: http://using.castleproject.org/display/IoC/FAQ –
Può questo essere fatto tramite il file di configurazione, invece? –
@Ben: non attualmente, ma è possibile consigliarlo su uservoice: http://castle.uservoice.com: "Aggiungi subresolvers tramite xml config" –