1

アプリケーションのプラグインを作成しようとしています。提供されているのは、インターフェイスを定義する dll リソース ファイルだけです。コードは次のとおりです。

using System;
using System.Drawing;

namespace App.Plugin.Resources.Interface
{
  public interface IAppPlugin
  {
    string Name { get; set; }

    string Description { get; set; }

    string Author { get; set; }

    string Version { get; set; }

    Icon MenuIcon { get; set; }

    EventHandler PluginEventHandler { get; set; }
  }
}

次に、このインターフェイスを実装するクラスを作成し、メッセージ ボックスを表示させ、dll をコンパイルし、それをアプリケーションの Plugins フォルダーに配置しました。アプリケーションがプラグインを実行して起動すると、メッセージが表示されました。

このソフトウェアは (プラグイン システムを介して) 外部コードを実行する手段を提供しているように思えますが、実際にはアプリケーションのプロパティやメソッドへのアクセスは提供していません。

上記を考慮して、私の質問は次のとおりです。指定されたリソースを使用して、他の方法でホストプロセスとやり取りできますか(たとえば、メニュー項目が選択されたときに通知を受け取るか、メニュー項目をメイン GUI に追加することさえできますか)、またはこれを行いますプラグイン システムは、(私が提供している dll のコードを実行することによって) アプリケーション ランチャーとして機能しますか?

4

1 に答える 1

2

これは単なるアプリケーション ランチャーであり、実際のプラグインではありません。慣習によって実装された戦略がない限り、おそらくアプリはリフレクションを使用してプラグイン コンストラクターを参照し、いくつかのインターフェイスをホスト システムに渡します。または、いくつかのマークが付いたプロパティを探します。カスタム属性を使用していくつかのエントリ ポイントを渡します。メイン アプリケーションのエントリ ポイントを渡すもう 1 つの可能性のある手段はPluginEventHandlerです。プラグインが呼び出されたときに受け取るものをデバッグで確認してみてください。さらに、いくつかのツールでILspyを調べて、プラグインのインスタンス化にさらに何かがあるかどうかを確認してください。

于 2012-08-07T11:53:51.300 に答える