2012-01-10 1 views
0

Autofac을 사용하여 my asp.net mvc 3 웹 응용 프로그램의 컨트롤러를 등록하고 있습니다. 지금은 컨트롤러 (플러그인)가 포함 된 DLL을로드해야하고 이후에는 해당 유형을 등록합니다. 자, 문제는 내가 타입 등록에로드하는 어셈블리에서 모든 물건을 처리 할 것입니다 PluginLoader 클래스가 사실에서 온다. 이 클래스는 autofac 컨테이너에도 등록됩니다. 문제는 해결하기 전에 컨테이너를 작성해야하는 경우 해당 클래스를 어떻게 사용할 수 있습니까? 나는이 autofac 컨테이너를 구축, 말은,이 PluginLoader 클래스를 해결, 나는 어셈블리를 스캔하고 컨트롤러를 찾을 다음 컨테이너가 alredy 구축 방법 ...autofac으로 형식을 초기화 할 때 ASP.NET MVC 3 컨트롤러를 등록하십시오.

EDIT 1

PluginManager를 호출 모든 플러그인을 관리하는 기본 클래스입니다. 기본적으로 Assembly.Load 메서드를 사용하여 어셈블리를로드하고 DLL을 검색하여 MVC 컨트롤러를 검색하는 PluginLoader 클래스에 따라 다릅니다. 이 클래스는 autofac 컨테이너에 싱글 톤으로 등록됩니다. 이제 PluginLoader는 컨트롤러를 autofac으로 등록해야합니다. 그러나이 작업을 수행하는 메소드를 호출하기 전에 컨테이너에서 PluginManager 클래스를 확인해야하며 이것이 문제입니다. "순환 종속성"또는 이와 유사한 것으로 보입니다. 용기와 모듈을 등록 후 PluginLoaderModule (AN Autofac 클래스)에서 파생 만드는 시도하고 - 그것은 당신의 부트 스트 래퍼의 일부처럼 내가 PluginManager를 해결 당시 컨테이너가 alredy 내장되어

+0

하지만 컨테이너가 이미 –

+0

을 초기화하더라도 바인딩을 추가 할 수는 있지만 가장 좋은 방법은 아닙니다. 그것은 드문 경우에만 컨테이너가 빌드 된 후에 업데이트해야합니다 (이것은 autofac 문서에 쓰여진 것입니다) – Stefano

+0

그리고 내가 물어보고 싶었던 것, 왜 당신이 의존성을 구축하는지 묻습니다. DI 프레임 워크는 제자리에 있습니까? –

답변

0

PluginLoader이 울립니다. 모듈은 Load() 메소드에서 플러그 - 로딩 로직을 캡슐화 할 수 있습니다.