2009-11-10 2 views
5

어떻게 (아마도 실수로) 같은 조립 2 부MEF로 중복 모듈을 방지하는 방법은 무엇입니까?

  • Assembly1.dll

  • Assembly2.dll의 존재의 경우 (복사에 중복 모듈을로드 MEF에서 방지 할 수 있습니다 Assembly1의)

    [ImportMany] 
    public IList<IModule> Modules { get; private set; } 
    
    public void BuildUp() 
    { 
        Modules = new List<IModule>(); 
    
        var catalog = new DirectoryCatalog(@".\Modules"); 
        var container = new CompositionContainer(catalog); 
    
        container.ComposeParts(this); 
    } 
    

답변

2

대신 DirectoryCatalog를 사용하는 AggregateCatalog를 사용합니다. modules 디렉토리에있는 모든 어셈블리를보고 현재 처리 된 코드가 이미 처리 된 코드인지 확인하고 그렇지 않은 경우 해당 어셈블리에 대한 AssemblyCatalog를 만들어 AggregateCatalog에 추가하는 코드를 작성해야합니다.

다른 이름을 가진 두 개의 DLL이 "동일한"어셈블리라는 것을 감지하는 데 사용할 수있는 로직이 무엇인지 정확하게 알지 못합니다.

+0

MEF에서로드되는 IModule의 중복 유형 구현을 방지해야합니다. 고마워. 내가 이런 식으로 노력할거야. –

관련 문제