Почему звонки Unity скованы? - PullRequest
1 голос
/ 31 января 2011

Я узнаю о контейнере внедрения зависимостей 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
}

Мой вопрос: почему цепочки вызовов связаны?То есть почему вышесказанное не может быть записано следующим образом:

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 Ответ

7 голосов
/ 31 января 2011

Чисто стиль. Это «свободный» стиль.

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

...