Aar*_*ide 10 c# dependency-injection unity-container
我的目标是构造函数注入实现接口的对象数组.
以下是我目前的方式.
Container
.RegisterInstance<Company>(ParseCompany(args[1])
.RegisterInstance<eTargets>(ParseTargets(args[2]))
.RegisterInstance<ILoader[]>(new ILoader[] {
Container.Resolve<CustomerLoader>(),
Container.Resolve<PaymentLoader(),
Container.Resolve<InvoiceLoader()
});
Run Code Online (Sandbox Code Playgroud)
以这种方式调用容器配置中的Resolve是典型的,还是有更标准的方法来完成同样的事情?
Mar*_*ann 28
Unity 本身理解数组,所以没有理由让它变得如此复杂.只需注册ILoaders
您想要包含并正常解析对象图.自动接线将负责其余部分:
container.RegisterType<ILoader, FooLoader>("foo");
container.RegisterType<ILoader, BarLoader>("bar");
container.RegisterType<ILoader, BazLoader>("baz");
var c = container.Resolve<MyConsumer>();
Run Code Online (Sandbox Code Playgroud)
假设MyConsumer
构造函数定义如下:
public MyConsumer(ILoader[] loaders)
Run Code Online (Sandbox Code Playgroud)
但是,您应该知道(出于一些不可思议的原因)Unity仅以这种方式包含命名组件.该默认组件:
container.RegisterType<ILoader, Loader>();
Run Code Online (Sandbox Code Playgroud)
将不包含在数组中,因为它没有名字.
归档时间: |
|
查看次数: |
5709 次 |
最近记录: |