
研究用プログラムでプラグインっぽい機構が欲しかったんで調査とメモ。
要件としては、
調べてみたらプラグイン機能を実現するためには大きく分けて二通りありました。
インターフェースを利用する方法が一般的に言われるプラグインでしょうか。
インターフェースを利用する場合は特定のパス内のアセンブリを探し、プラグインの一覧リストを作成、インターフェースを用いて動作させるという順番です。インターフェースを使った実装の場合は本格的な実装が出来る利点はあり、共通のメソッドが複数存在する場合は便利かと思います。
しかし、今回の私の場合は他の人の機能追加分の動作がどこで発生するか未定で、共通のメソッドを整理できない(インタフェースなんて作れない)状態だったので、メインプログラム側のイベントをデリゲートする作りで実装することになりました。今回の場合はそれで問題ないのですが、複数のプラグインから動作時に1つを選ぶといった実装が必要な場合はインターフェースの利用に変更することになるでしょう。