プラグイン機能を実装する


C#でプラグイン機能を実装する方法をご紹介。参考サイトはいくらかあるのですが、私なりにアレンジしています。

プログラムを自由に拡張するために必要なプラグインの機能。ついでにアドオンや拡張機能もプラグインと同等です。

1つのdllファイルに幾つかのインターフェースを実装している場合、それも同時に取得する方法ことができるように改良しました。

ソースコード

だいぶ長いです。

このソースコードの特徴は、どのようなプラグイン用のクラスであれ検索できること。FindPluginメソッドにプラグインの型をジェネリックとしてつけると検索します。
検索範囲はすべてのファイルを検索しようとするので、dllファイルのみという場合はソースコードを編集してください。

あとこの方法だとインターフェースの他に継承クラスも検索されます。高性能なプラグイン機能となるとインターフェースより継承クラスの方がよく使われる気がします。

使い方

プラグインを検索する

もしもIPluginというインターフェースが実装されたプラグインファイルを検索したい場合

と、この1行で実装できます。戻り値はPluginInfoクラスの配列。

オブジェクトを取得する

上記のコードの続きにこのコードを書いてください。

これだけで簡潔します。

もしも、IPluginインターフェースは1つしか取得しないぞ!という場合は

とすればもっと簡単に取得できます。前者の書き方だと.Net Framework 4.0から、Linqを使う必要がありますが…

 参考

こちらのソースコードを参考にしました。あくまで上記のコードはこのサイトのコードを改良しただけですからね

プラグイン機能を持つアプリケーションを作成する
http://dobon.net/vb/dotnet/programing/plugin.html