2011-11-13 3 views
0

私は単純なコンストラクタを使ってカスタムトレースリスナを持っています。customTraceListenerのユニティの解決?

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

これはweb.configのsystem.diagnosticsを介して私のWebアプリケーションに接続されています。しかし、これを実行することはありません。これを解決するにはどうすればよいですか?何とかweb.configを編集する必要がありますか?私がデフォルトのコンストラクタを追加すると、デフォルトのコンストラクタに何らかの解決をさせるのが正しい方法でしょうか?

答えて

1

残念なことに、あなたは固執しています。トレースシステムはオブジェクト作成を引き継ぐ機会を与えないので、Unityはコンストラクタインジェクションを行う機会を得られません。システムはトレースリスナを新しくします。

あなたができることは、コンストラクタの依存関係ではなくプロパティとして依存関係を設定し、作成後にトレースリスナーオブジェクトを取得し、container.BuildUpを呼び出してプロパティを注入することです。

0

あなたのコードまたはweb.configのいずれかにISomethingをUnityに登録しましたか?

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

や設定ファイルを経由してのようなものを[here]

を説明するように、あなたのカスタムのTraceListenerを解決するためにユニティを呼ぶのですか?

また、Unityがリスナーをパラメータとして解決するようにリスナーを使用する必要がある他のクラスにリスナーを挿入しますか?

+0

それはトリックです..私は本当にmytracelististenerの解決を呼び出すことはできません - それは最初のトレース呼び出しがアプリケーションで行われたときにTraceUtilクラスによって作成されました.. – XeroxDucati