为什么Unity会被锁定?

时间:2011-01-30 21:49:59

标签: c# dependency-injection unity-container

我正在学习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
}

或者这纯粹是一种风格?

1 个答案:

答案 0 :(得分:7)

纯粹的风格。这是“流利”的风格。

http://en.wikipedia.org/wiki/Fluent_interface