2014-05-09 59 views
0

我一直沒有使用Autofac長,我想知道這是註冊參數的最佳方式:Autofac最佳實踐傳遞參數

  • 使用寄存器()方法,以表達蘭巴

    builder.Register(a => new SomeClass(config)) 
         .As<ISomeClass>(); 
    
  • 使用RegisterType()方法和WithParameter()

    builder.RegisterType<SomeClass>() 
          .WithParameter(new NamedParameter("config", config)) 
          .As<ISomeClass>(); 
    

第二種方式對我來說看起來更好,但我猜這是非常危險的,因爲參數的名稱可以改變。

回答

1

使用更適合您需求的方式。如果你不需要太多的靈活性,那就用第一種方法。但只要SomeClass依賴關係增長,您可能需要使用更靈活的方法,如NamedParameter

使用命名組件註冊像

builder.RegisterInstance(config).Named<Config>("DefaultConfig"); 
builder.Register((c, p) => new SomeClass(p.Named<Config>("DefaultConfig"))) 
     .As<ISomeClass>(); 

瞭解更多關於這些話題從Resolve Parameters文檔

在任何情況下,最好的做法是,以覆蓋所有的註冊的單元測試作爲一個選項可用以避免意想不到的結果。