1

次のコードを使用して、WCF クライアント サービスのメイン クラスにプラグインを正常にロードしています。

    [Import]
    public IBasePluginService PluginService { get; set; }


    public void PluginCompose(string targetPath)
    {
        var catalog = new DirectoryCatalog(targetPath);
        var container = new CompositionContainer(catalog);
        container.ComposeParts(this);
    }

そして、以下を使用してメソッドを呼び出します。

PluginCompose(loadPluginTarget); PluginService.HelloWorld("何か");

デュプレックス コントラクトのコールバック インターフェイスを実装するクラスでプラグイン dll メソッドを使用できるようにするにはどうすればよいですか?

プラグイン dll でメソッドを呼び出す前に、毎回 PluginCompose() を呼び出す必要がありますか?

4

1 に答える 1

0

コンポーネントを作成 (依存関係を注入) する必要がありますが、プラグインを使用することはできません。それをコンストラクターに入れるか、最初の呼び出しでコンポーネントを初期化する他の方法を使用できます。

言い換えれば、これはプラグインをロードして動作させ、使用できるようにするものなので、プラグインの使用を開始する前に、このちょっとした魔法を起こす必要があります。using

using(var catalog = new DirectoryCatalog(targetPath))
using(var container = new CompositionContainer(catalog))
{
    container.ComposeParts(this);
}
于 2013-08-26T21:03:04.250 に答える