Il mio obiettivo è il costruttore di iniettare una matrice di oggetti che implementano un'interfaccia.Iniezione di array con Unity
Quanto segue è il modo in cui attualmente lo ho.
Container
.RegisterInstance<Company>(ParseCompany(args[1])
.RegisterInstance<eTargets>(ParseTargets(args[2]))
.RegisterInstance<ILoader[]>(new ILoader[] {
Container.Resolve<CustomerLoader>(),
Container.Resolve<PaymentLoader(),
Container.Resolve<InvoiceLoader()
});
è tipico di chiamare Resolve in configurazione del contenitore così o c'è un modo più standard per ottenere la stessa cosa?
wow, questa è una grande punta grazie –
Non esattamente insondabile: il motivo è che, se avete bisogno di più di una voce per lo stesso tipo, quindi è necessario aggiungere un nome altrimenti Unità penserà che sta effettivamente l'override la voce precedente (che è vietata). –
@BrunoBrant 'insondabile' perché nessun altro contenitore DI funziona in questo modo. Vedi per es. [il mio libro] (http://amzn.to/12p90MG) per maggiori dettagli. –