2011-03-09 3 views
2

우리는 MEF를 사용하여 플러그인/IoC 솔루션을 조사하고 있습니다.Mef를 사용하여 플러그인 오버라이드 핵심 인터페이스

개념은 핵심 프로젝트가 작동하는 인스턴스입니다. 그런 다음 플러그인이 포함 된 핵심 내보내기를 대체합니다.

var catalog = new AggregateCatalog(
      new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()), 
      new DirectoryCatalog("Plugin")); 

어떻게 플러그인 카탈로그를 기존 어셈블리 카탈로그 내보내기에 덮어 씁니까?

답변

2

이 예에서는 plugin 하위 폴더에있는 모든 내보내기가 응용 프로그램 폴더에있는 내보내기를 무시합니다. 여러 내보내기 공급자를 CompositionContainer으로 전달하여 작동합니다. 첫 번째 수출 업체가 우선합니다.

var defaultExportProvider = 
    new CatalogExportProvider(new DirectoryCatalog(".","*")); 
var pluginExportProvider = 
    new CatalogExportProvider(new DirectoryCatalog(@".\plugin")); 
var container = new CompositionContainer(
    pluginExportProvider, defaultExportProvider); 
defaultExportProvider.SourceProvider = container; 
pluginExportProvider.SourceProvider = container; 
관련 문제