2011-10-06 9 views
4

MVC 프로젝트에 로그인을 설정 중입니다. 내 수업 NLogLogger는 [Type] 유형의 매개 변수를 사용합니다. 현재 인스턴스화중인 컨트롤러의 유형을 전달하는 NLogLogger 객체를 인스턴스화하기 위해 autofac을 얻을 수 있습니까? 아래 코드에서 TTT는 컨트롤러 유형이어야합니다.생성되는 컨트롤러 유형 가져 오기

builder.Register(c => new NLogLogger(TTT)).As<ILogger>(); 
builder.RegisterControllers(Assembly.GetExecutingAssembly()); 

대단히 감사합니다.

Damien.

+0

아직 답변을 찾고 계십니다. IComponentContext (c)에서 클래스에 액세스 할 수 있는지 알아보기 위해 아래 코드를 사용했지만 행운은 없습니다. 여전히 쳐다보다! :-) builder.Register ((c, t) => { 새로운 NLogLogger()를 호출 ; })로 ().; –

답변

3

the Log4NetIntegration과 동일한 방식으로 문제를 해결할 수 있습니다. 을 설정하여 모든 구성 요소 준비 (일부 인스턴스가 컨테이너에 의해 생성 될 예정 임)를 청취하고 구성 요소 유형에 대한 NLog 로거를 제공합니다.

+0

고마워 피터, 그게 내가 한 일이야. 멋진 코드 조각입니다. 나는 Autofac에 매우 감명 받았고 나의 IoC 컨테이너 선택에 행복하다. :-) –

+0

@Damien, 듣기 좋다. :) –

+0

@PeterLillevold 나는 이것을 내 애플 리케이션에 구현하려고하는데, 할 수 없다. 먼저 LogManager.GetLogger (t)는 유형 때문에 t 매개 변수를 허용하지 않습니다. 이 구현의 예가 있습니까? –

관련 문제