2011-05-21 185 views
1

註冊一個運行時依賴在代碼我重構,我有以下情況:在溫莎城堡

void Plugin(IExternalService service) 
{ 
    var facade = new Facade(
     new ExternalServiceWrapper(service), 
     new Dependency1(), 
     new Dependency2()); 
} 

Dependency1Dependency2IDependency1IDependency2實現。

如何將此轉換爲Windsor安裝程序中的註冊?我似乎無法想象我們如何將IExternalService的實例傳遞給容器。

編輯我不控制插件的創建。我想用它作爲組合根來連接所有的依賴關係。

+0

目前還不清楚你要完成的任務。你想讓容器調用Plugin方法,還是要從Plugin方法中調用容器? – 2011-05-21 15:41:08

+0

我試圖讓'Facade'的所有依賴關係(實現'IFacade'解決了Windsor的問題。插件的入口點必須是我的組合根,它在運行時有時會發生,我不能控制它。 – 2011-05-21 15:56:50

+0

所以其實你不會調用'新門面',而是'container.Resolve ()'? – 2011-05-21 16:03:32

回答

4

要註冊一個現有的情況下,你可以使用實例方法:

container.Register(Component.For<IExternalService>().Instance(service)); 
+0

在最後,這就是我所需要的,容器自己照顧自己,我只需要在安裝程序中以正確的順序指定它。 – 2011-05-21 17:41:04