院生エンジニアのにっき

  • Change style to Blue
  • Change style to Red
  • Change style to Green
  • Change style to Pink

C#でプラグイン機能を持たせる   2008-01-19

研究用プログラムでプラグインっぽい機構が欲しかったんで調査とメモ。

要件としては、

  • メインのプログラムは自分が書いている
  • 他の人が機能追加分(モジュール単位)を実装してくれる
  • 自分のプログラム部分はまだまだ変更するからさわって欲しくない
  • 他の人のプログラムの変更にあわせてメインプログラムは極力変更したくない

調べてみたらプラグイン機能を実現するためには大きく分けて二通りありました。

  1. インターフェースを利用する
  2. デリゲートを利用する

インターフェースを利用する方法が一般的に言われるプラグインでしょうか。

インターフェースを利用する場合は特定のパス内のアセンブリを探し、プラグインの一覧リストを作成、インターフェースを用いて動作させるという順番です。インターフェースを使った実装の場合は本格的な実装が出来る利点はあり、共通のメソッドが複数存在する場合は便利かと思います。

しかし、今回の私の場合は他の人の機能追加分の動作がどこで発生するか未定で、共通のメソッドを整理できない(インタフェースなんて作れない)状態だったので、メインプログラム側のイベントをデリゲートする作りで実装することになりました。今回の場合はそれで問題ないのですが、複数のプラグインから動作時に1つを選ぶといった実装が必要な場合はインターフェースの利用に変更することになるでしょう。


コメントを書く