我正在学习Unity依赖注入容器,我总是看到很多像这样的代码:
using (IUnityContainer container = new UnityContainer())
{
container
.RegisterType<IView, Form>()
.RegisterType<IService, Service>(
new InjectionProperty("Logger")
)
.RegisterType<ILogger, ConsoleLogger>()
.RegisterType<ILogger, Logger>("UI")
.RegisterInstance(new TraceSource("UI", SourceLevels.All))
.RegisterType<Presenter>(
new InjectionProperty("Logger",
new ResolvedParameter<ILogger>("UI")
)
);
Presenter presenter = container.Resolve<Presenter>();
//do stuff with presenter
}
我的问题是为什么电话会被锁定? I.E.为什么以上内容不能写成如下:
using (IUnityContainer container = new UnityContainer())
{
container.RegisterType<IView, Form>();
container.RegisterType<IService, Service>(
new InjectionProperty("Logger")
);
container.RegisterType<ILogger, ConsoleLogger>();
container.RegisterType<ILogger, Logger>("UI");
container.RegisterInstance(new TraceSource("UI", SourceLevels.All));
container.RegisterType<Presenter>(
new InjectionProperty("Logger",
new ResolvedParameter<ILogger>("UI")
)
);
Presenter presenter = container.Resolve<Presenter>();
//do stuff with presenter
}
或者这纯粹是一种风格?