1

私は新しいプラグイン ローダー アプリケーション フレームワークを開発しており、MEF の利用可能なすべてのバリアントを読んでいます。最も将来性のある柔軟なものは、NuGet からSystem.Composition.

残念ながら、すべてではないにしてもオンラインのほとんどのチュートリアルは MEF1 用に書かれています。つまり、ディレクトリ内の DLL を明示的に見つけてそれを MEF に渡すなどして作成されSystem.ComponentModel.Compositionた を使用します。AssemblyCatalogCompositionContainer

MEF2 にはこのオブジェクトがないため、MEF2 がそのコンポーネントをどこで見つけるかはまだ不明です。実行時にそれらを見つけることはできませんか (これは、プラグインをロードするアプリケーションへの参照として各プラグインを追加する必要があることを意味します)? それは私を奇妙に思うでしょう。

どのアセンブリがどこからロードされるかを指定する方法(そして、これをどのようにセットアップする必要があるか)について、誰かが光を当てることができますかSystem.Composition?MEF2 が PCL を念頭に置いて設計されていることは理解していますが (私はデスクトップ アプリを作成しています)、この将来の移植性のために支払うセットアップ費用が少なければ、私はそれで十分です。System.ComponentModel.Compositionそうでない場合は、私が把握できるものを使用することに屈します。

4

1 に答える 1

1

カタログは ContainerConfiguration に置き換えられます。

        var conf = new System.Composition.Hosting.ContainerConfiguration();
        conf.WithAssembly(Assembly.GetExecutingAssembly());
        var container = conf.CreateContainer();

        var hwWriter = new HelloWorldWriter();
        container.SatisfyImports(hwWriter);

        Console.WriteLine(hwWriter.Write);
        Console.ReadLine();

には、MEF1 のすべての異なるカタログを置き換える、ContainerConfigurationさらに多くのメソッドがあります。With...

于 2016-04-13T23:03:47.180 に答える