1

我期望這樣做:Microsoft Unity-解決問題

container.Resolve();

當它做到這一點時,它將向基礎實體對象注入一個IDependency。但是,存儲在容器中的依賴項需要DependencyValue類型的對象,該對象從DependencyFactory中提供一個值。長話短說,我遇到的問題是,當Unity創建實現IDependency的類的實例時,我需要接管並在容器中插入自定義值。

這是可能的,或者是我最好的選擇在容器上使用RegisterInstance並手動實例化對象?我更喜歡使用配置文件來存儲映射,然後爲參數實例化添加一些邏輯。那是什麼ParameterOverrides是做什麼的?或者我需要爲此添加擴展名,或者是什麼?

謝謝。

回答

1

你爲什麼不使用靜態工廠延期?

var container = new UnityContainer(); 
container.AddNewExtension() 
     .Configure() 
     .RegisterFactory(container => 
          DependencyFactory.GetValue()); 
+0

是的,這就是我一直在尋找。不知道該功能是否存在。謝謝你的提示。 – 2010-09-29 12:39:36

+1

如果您使用的是Unity 2.0,則更容易,可以這麼做:container.RegisterType (new InjectionConstructor(c => DependencyFactory.Create());不需要擴展或單獨的配置步驟。 – 2010-09-29 15:42:10

0

如果您通過其接口在容器中註冊DependencyFactory的實現(通過代碼或配置),該怎麼辦?然後你會得到注入的DependencyFactory,並簡單地向它請求必要的對象。

除非我不正確地理解這個場景,你的類有一個依賴項,這個依賴項在運行時通過工廠來確定。由於這正是Unity所做的,您可以使用正確的實例註冊(例如使用ID)來將Unity用作DependencyFactory。

我希望這會有所幫助。

感謝, 達米安