C# プラグイン対応アプリケーションの作り方

Last-modified: 2007-10-31 (水) 14:56:59

プラグイン・インタフェースDLLの作成

まずは、プラグインのインタフェースを規定するクラスライブラリを作成する。
たとえば、以下のような感じ。

namespace PluginBase
{
    public interface IPlugin
    {
        string GetName();
    }
}

プラグインの作成

プラグインを作成する場合、「プラグイン・インタフェースDLLの作成」で作ったインタフェースを継承してプラグインを作成する。たとえば、以下のような感じ。

namespace MyPlugin
{
    public class CPlugin : PluginBase.IPlugin
    {
        public string GetName()
        {
            return "My name is CPlugin.";
        }
    }
}

※先ほど作成したDLLを参照設定に入れる必要がある。

プラグイン対応アプリケーション

プラグインをロードするアプリケーションは、以下のようにコードを記述することで、最初に規定したプラグインのインタフェースを取得することができる。

System.Reflection.Assembly assembly = Assembly.LoadFile("C:\\MyPlugin.dll");
Type type = assembly.GetType("MyPlugin.CPlugin");
PluginBase.IPlugin iPlugin = Activator.CreateInstance(type) as PluginBase.IPlugin;

※assembly,type,iPluginをnullチェックすること。


補足

ちなみに、PluginBaseなんていうDLLを作らなくてもソースをPluginBase.IPluginインタフェースを定義したファイルを共有すればいいじゃないか・・と思ったのですが、それはダメ。

PluginBase.IPlugin iPlugin = Activator.CreateInstance(type) as PluginBase.IPlugin;

このキャスト時にプラグインのCPluginの継承元のIPluginと、アプリが使用するIPluginが異なってしまい、キャストに失敗する。


参考文献