2011-01-30 16 views
1

私はユニティ依存性注入コンテナについて学んだ、と私はいつもこのようなコードの多くを参照してください。なぜ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.なぜ上記は次のように書かれませんでしたか?

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 
} 

これは純粋にスタイルですか?

答えて

7

純粋なスタイル。それは "流暢な"スタイルです。

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

+1

+1。それはノイズを減らす - 第2の例における「コンテナ」は冗長な情報である。 – TrueWill

+2

Ah。したがって、jQueryがその意味でどのように動作するかは、かなり似ています。 –

関連する問題