Unity natively understands arrays, so there's no reason to make it so complicated. Just register the ILoaders
you want to include and resolve the object graphs normally. Auto-wiring will take care of the rest:
container.RegisterType<ILoader, FooLoader>("foo");
container.RegisterType<ILoader, BarLoader>("bar");
container.RegisterType<ILoader, BazLoader>("baz");
var c = container.Resolve<MyConsumer>();
assuming that the MyConsumer
constructor is defined like this:
public MyConsumer(ILoader[] loaders)
However, you should be aware that (for some unfathomable reason) Unity only includes named components in this way. The default component:
container.RegisterType<ILoader, Loader>();
will not be included in the array, since it has no name.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…