2011-11-13 7 views
0

간단한 생성자를 사용하여 사용자 지정 추적 수신기가 있습니다.customTraceListener의 단일 해상도?

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

이 파일은 web.config의 system.diagnostics를 통해 내 웹 응용 프로그램에 연결됩니다. 그러나이 파일은 실행되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 어떻게하면 web.config를 편집해야합니까? 만약 내가 발생시키는 기본 생성자를 추가한다면 올바른 접근법은 기본 생성자가 스스로 해결할 일종의 일을하는 것일까?

답변

1

불행히도, 당신은 고생하고 있습니다. 추적 시스템은 객체 생성을 대신 할 수있는 기회를 제공하지 않으므로 Unity는 생성자 주입을 수행 할 기회를 얻지 못합니다. 시스템이 추적 수신기를 새로 작성합니다.

가장 좋은 방법은 생성자 종속성이 아닌 속성으로 종속성을 설정 한 다음 생성 된 후 추적 수신기 개체를 가져 와서 container.BuildUp을 호출하여 속성을 주입하는 것입니다.

0

코드에 또는 web.config에 Unity와 함께 ISomething을 등록 했습니까?

당신이 사용자 정의 TraceListener에서를 해결하기 위해 유니티를 호출 마십시오

[here]을 설명

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

같은 또는 설정 파일을 통해 뭔가?

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

또는 유니티가 리스너를 매개 변수로 해결하도록 사용되는 다른 클래스에 리스너를 삽입합니까?

+0

그건 속임수 야. 정말 mytracelistener에 대한 해결책을 호출 할 수 없다 - TraceUtil 클래스에 의해 생성 된 첫 번째 Trace 호출이 앱에서 만들어 졌을 때. – XeroxDucati