2010-08-26 15 views
3

我有一個具體的類logger,Microsoft.Unity將解決​​到。當我的具體類有兩個構造函數時,Microsoft.Unity不Unity.Resolve <ILogger>?

記錄器類有兩個構造函數:

1. public logger() 
2. public logger(List<BaseLogger> Loggers) 

我在我的web.config文件的統一部分看起來像這樣:

<unity> 
<containers> 
    <container> 
    <types> 

     <type type="MyCompany.Logger.ILogger, MyCompany.Logger" 
      mapTo="MyCompany.Logger.logger, MyCompany.Logger"> 

     </type> 
    </types> 
    </container> 
    </containers> 
</unity> 

如果我刪除列爲2的構造,記錄器類由Unity成功解析。當我將它添加回來時,出現此錯誤...

解決依賴失敗,type =「MyCompany.Logger.ILogger」,name =「(none)」。 發生異常時:解析時。 異常是:InvalidOperationException - 類型List`1具有長度爲1的多個構造函數。無法消除歧義。

任何人都可以解釋我可以如何更改我的web.config項來處理「2」在記錄器中列出重載構造函數以嘗試Unity.Resolve時工作?

回答

3

Unity默認情況下會嘗試使用具有最大參數數的構造函數創建實例。

爲了指定使用哪一個,您需要使用構造函數注入。您可以標記要與InjectionConstructor屬性一起使用的構造函數,也可以在配置中指定構造函數。 This應該有所幫助。

我明白MSDN上的文檔不夠好。如果有幫助,請參閱this。我無法找到我今天在辦公室閱讀的文章的鏈接。這有很好的描述。祝你好運,如果你能找到一個或更好的。

+0

我從文檔中看到,您將鏈接到我如何處理簡單類型,如將參數放入web.config文件中的字符串。從文檔中看到我現在遇到的困難是如何使用像我提到的List 這樣更復雜的類型。 – apolfj 2010-08-26 16:57:38

相關問題