2013-05-19 173 views
0

我們生產的工具包可以被各種IoC容器支持,該工具包完全不受IoC影響,我們爲不同的容器提供基本支持。 我們正在努力支持Autofac,我們需要的是允許最終用戶覆蓋我們的基於約定的配置。組件註冊覆蓋

我將解釋Windsor會發生什麼,以便了解是否存在與Autofac類似的機制。

該工具包提供了一組內置服務/組件,它們在最終用戶容器中「自動」註冊。使用Windsor,我們將所有內容註冊爲「後備」,以便如果用戶註冊與「默認」服務相同的服務,用戶組件將被解析爲覆蓋我們的註冊。

這種方法的有趣之處在於它可以工作,而不管組件的註冊順序如何。

任何方式與Autofac實現相同的行爲? .m

回答

1

我認爲您正在尋找PreserveExistingDefaults擴展名。您可以在Autofac wiki中閱讀更多關於它的內容:https://code.google.com/p/autofac/wiki/ComponentCreation

+0

好點,但我無法控制,以及我不想控制註冊順序。 –

+0

但由於autofac的性質,默認情況下最後一次獲勝,可能會更容易控制安裝/配置順序。 –

-1

如果您完全移除IOC容器會發生什麼情況?

您可能在這裏需要不同的模式。如果你想要容器不可知的默認註冊,你需要把代碼本身看作是容器不可知的,沒有在容器中註冊的回退。

你可以使用窮人DI。 (儘管你可能想在一個地方編排這些默認依賴關係的創建和替換,所以下面可能不合適,但工廠可以處理這個)。

public SomeConstructor(IService service) 
{ 
    if(service == null) 
    { 
     service = new DefaultService(); 
    } 
}