2011-10-26 2 views
2

저는 MEF를 처음 접했습니다 (이제는 몇 주 동안 사용해 본 경험이 있습니다). 나는 호스트 내 모든 수출 (I 별도의 DLL이 같은 3 개 가지 수출을)를로드 (콘솔 응용 프로그램)가 - 여기 MEF 수출 업체와 호스트 사이의 이벤트 설정

내가 구축 한 것입니다. 이것은 정말 잘 작동합니다. 이러한 내보내기는 모두 별도의 클래스 라이브러리이며, 호스트로드 프로그램은 Windows 콘솔 응용 프로그램 일뿐입니다.

내보내기 라이브러리는 각각 다른 데이터 공급자를 처리합니다.

내 기본 인터페이스를 확장하여 내 기본 인터페이스를 확장하여 데이터가 변경되었을 때 내보내기가 호스트에 알릴 수 있도록하고 호스트가 나머지 응용 프로그램 (MEF 아님)에 알리도록 할 수 있습니다.

나는 수출과 호스트 사이의 이벤트를 연결할 수있는 적절한 패턴을 찾기 위해 노력하고 몇 가지 문제가 있어요.

감사합니다.

답변

2

데이터 제공 업체를 가져올 이벤트 핸들러를 연결할 수 없습니까? 데이터 폴더에있는 파일 인 경우

[ImportMany(typeof(IDataProvider))] 
public IEnumerable<IDataProvider> DataProviders 
{ 
    private get 
    { 
     return this.dataProviders; 
    } 
    set 
    { 
     this.dataProviders = value; 
     foreach (var dataProvider in value) 
     { 
      dataProvider.DataChanged += HandleDataChanged; 
     } 
    } 
} 
+0

내 수출품이 사용하는 인터페이스에 이벤트 핸들러를 추가 하시겠습니까? 나는 이것을 시험해 보았지만 모두 잘 처리했지만 ReflectionTypeLoadException을 받기 시작했다. 이벤트 처리기에서 일반적인 EventArgs 또는 사용자 정의간에 차이가 없다는 것을 알았습니다. –

+1

@GT :'ReflectionTypeLoadException'은 별도의 문제입니다. 일반적으로 존재하지 않는 어셈블리가 빌드 폴더에 있습니다. 그들은 여전히 ​​MEF'DirectoryCatalog'에 의해 선택됩니다. MEF가 이러한 어셈블리를로드하려고하면 더 이상 존재하지 않는 형식을 참조 할 때 실패합니다. –

+0

이 솔루션을 사용할 수 없습니다. 컨텍스트를 더 제공 할 수 있습니까? –