はじめに
StreamRelay.NET.exe/sWebTool のプラグインとして公開しているインターフェイスは、全てjp.dip.rocketeer.Plugins.IPluginBaseインターフェイスを継承している
プラグインを作成する際には、IPlugin.dllを参照設定して、あとは必要なメソッドを実装するだけですが、
このjp.dip.rocketeer.Plugins.IPluginBaseインターフェイスで定義されているメソッドについては、私自身ほぼコピペの実装なので、それについて記述する
jp.dip.rocketeer.Plugins.IPluginBaseインターフェイスで定義されているメソッド/プロパティ
以下のとおり
- String PluginName { get; }
- プラグインの名前
- String PluginDescription { get; }
- プラグインの説明文
- String PluginVersion { get; }
- プラグインのバージョン
- String PluginFilePath { get; set; }
- プラグインのファイルパス
jp.dip.rocketeer.Plugins.IPluginBase#PluginFilePath
これは、IPlugin.dll内部のプラグインを管理するコードから、プラグインとしてロードした時に自動的に割り当てられるので、変数を宣言しておくだけでよい
逆にいろいろとセットしても、プラグインとしてロードした時に書き換えられるので意味ないですよ(get だけではなく、setが付いているからね)
jp.dip.rocketeer.Plugins.IPluginBase#PluginName
これは、プラグインの一覧などを表示する際に呼ばれるので、プラグインを表わす適切な固定値にしておけばよいかと思う
私自身は、VisualStudioで設定できるバイナリファイルの各種プロパティをそのまま呼び出している
public string PluginName{
get{
//自分自身のAssemblyを取得し、名前を返す
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
return asm.GetName().Name;
}
}
jp.dip.rocketeer.Plugins.IPluginBase#PluginDescription
これも、私のイメージはバイナリファイルの各種プロパティの「説明文」のところなので、私自身は全てのプラグインでこんな感じで実装している
public string PluginDescription{
get{
System.Reflection.AssemblyDescriptionAttribute asmdc = (System.Reflection.AssemblyDescriptionAttribute)System.Attribute.GetCustomAttribute(System.Reflection.Assembly.GetExecutingAssembly(), typeof(System.Reflection.AssemblyDescriptionAttribute));
return asmdc.Description;
}
}
jp.dip.rocketeer.Plugins.IPluginBase#PluginVersion
これも、私のイメージはバイナリファイルの各種プロパティの「バージョン」のところなので、私自身は全てプラグインでこんな感じで実装している
public String PluginVersion{
get{
//自分自身のAssemblyを取得し、バージョンを返す
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
System.Version ver = asm.GetName().Version;
return ver.ToString();
}
}