0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

インターフェイス IPluginBase について

Posted at

はじめに

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();
  }
}

目次へ戻る

目次というか最初の一歩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?