2011-03-13 4 views
0

저는 흥미로운 상황에 있습니다. IControllerActivator를 정의 할 IControllerActivator 구성 요소에 IContainer를 전달해야하지만 컨테이너 내부에 IControllerActivator를 등록해야합니다. 이것은 IControllerActivator가 컨테이너를 사용하여 컨트롤러를 작성하기 때문입니다.AutoFac 및 MVC IControllerActivator 컨테이너 필요

컨테이너를 global.asax 파일 내에서 정적 참조로 저장했습니다. 이 방법으로 컨테이너에있는 모든 활성 객체와 같은 종속 객체가이를 참조 할 수 있습니다. 액티베이터는 컨테이너를 사용하고 autofac 모듈에 등록해야하므로이 특정 매핑에 컨테이너에 대한 참조가 필요하다는 것을 정의하는 방법이 있습니까? 아니면 컨테이너를 만든 후에 등록 할 수 있습니까?

내 옵션에는 어떤 것들이 있습니까?

감사합니다.

답변

3

당신은 IComponentContext에 종속성을 수행 할 수 있습니다

public Foo(IComponentContext context, ...) 

Autofac 컨테이너가 자동으로 모든 구성 요소가 사용할 수 있도록 이러한 유형의 아래에 자신을 등록합니다. 컨텍스트 인스턴스는 응용 프로그램 수준 컨테이너인지 또는 요청 수준 컨테이너인지에 관계없이 Foo이 처리되는 컨테이너입니다. 이렇게하면 참조하는 컨테이너의 범위를 알 필요가 없어집니다.

Autofac relationship types 중 하나가 필요한지 확인할 수 있습니다. 이러한 유형의 게임에서는 IComponentContext을 직접 참조해야하는 경우는 거의 없습니다. 이것은 당신의 수업을 Autofac에 대한 직접적인 지식없이 유지합니다.