2017-03-07 59 views
0

我正在更新的一些代碼使用的Unity對我來說有點新,儘管我得到了一般原則。配置構造函數參數時,IUnityContainer.Resolve()和ResolvedParameter有什麼區別?

一個接口註冊這樣的:

  _container.RegisterType<ISomething, Something>(
      new ContainerControlledLifetimeManager(), 
      new InjectionConstructor(
       new ResolvedParameter<ITypeA>(), 
       new ResolvedParameter<ITypeB>(), 
       _container.Resolve<ITypeC>() 
      ) 
     ); 

我很困惑new ResolvedParameter<ITypeB>()_container.Resolve<ITypeC>()之間的區別 - 有人可以更清楚的區別是什麼,當每一個可能被用來/首選?

回答

1

每當你解決ISomething,新ITypeA和新ITypeB實現被實例化(假設他們沒有註冊爲單身)並傳遞給構造函數。但對於ITypeC,您在調用_container.Resolve<ITypeC>()時會創建確切的實例。

看到相關的問題:Injecting new constructor parameters every time a type is resolved using unity

+0

這是非常明確的,一個是通過一個具體的實例另一種是推遲它。謝謝。 –

相關問題