2009-11-10 23 views
5

MEFでモジュールの重複を防ぐ方法は?私は(おそらく誤って)同じアセンブリの2つのコピーが存在する場合には重複モジュールをロードするためにMEFから防ぐことができますどのよう

  • Assembly1.dll

  • Assembly2.dll(コピー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を使用します。モジュールディレクトリ内のすべてのアセンブリを調べ、現在処理されているものが既に処理済みの複製であるかどうかを調べ、そうでない場合は、そのアセンブリのAssemblyCatalogを作成してAggregateCatalogに追加するコードを記述する必要があります。

異なる名前の2つのDLLが同じアセンブリであることを検出するためにどのようなロジックを使用できるかはわかりません。

+0

MEFによって読み込まれるIModuleの重複型の実装を防ぐ必要があります。ありがとう、私はこの方法で試してみます。 –

関連する問題