2011-11-13 15 views
0

我有一個自定義的跟蹤偵聽器,一個簡單的構造函數;customTraceListener的統一解析度?

public MyTraceListener(ISomething something) 
{ 
_something = something; 
} 

這是通過System.Diagnostics程序在web.config連接到我的web應用程序。但是,它似乎永遠不會觸發此。我如何獲得團結解決這個問題?我需要以某種方式編輯我的web.config嗎?如果我添加一個默認的構造函數,那麼正確的方法是讓默認的構造函數自己做一些解決方案?

回答

1

不幸的是,你有點卡住了。跟蹤系統不會讓您有機會接管對象創建,因此Unity沒有機會進行構造函數注入。系統將新建跟蹤偵聽器。

你能做的最好是設置你的依賴作爲屬性,而不是構造相關性,然後抓住跟蹤監聽器對象,它已經創建之後,並呼籲其container.BuildUp獲得注入的屬性。

0

您是否在您的代碼或web.config中註冊了與Unity的ISomething?

喜歡的東西

var container = new UnityContainer().RegisterType<ISomething, Something>(); 

或通過配置文件所描述的[here]

你叫團結,以解決您的自定義的TraceListener?

var myTraceListener = container.Resolve<MyTraceListener>(); 

或者您是否在其他應該使用它的類中注入偵聽器,以便Unity將偵聽器解析爲參數?

+0

這就是訣竅..我真的無法在mytracelistener上調用一個解決方案 - 它是由TraceUtil類在應用中創建第一個跟蹤調用時創建的。 – XeroxDucati