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.

文字コードプラグインの実装方法

Last updated at Posted at 2021-04-02

StreamRelay.NET.exe の文字コード変換機能を呼び出しているプラグインの実装方法について説明する

StreamRelay.NET.exe/StreamRelay.NET.x86.exeには、いくつかの機能をプラグインとして実装できるようにインターフェイスを公開している。

今回は、文字コード(主に自作した文字コード)変換機能のためのインターフェイスを使って、プラグインを作成する方法を記述する。


既存のプラグイン

UTF-5とかなんちゃって文字コードを実装している(sEncoding.dll)のラッパとなっているぐらいかな。

プラグイン的には、このあたり。

  • Plugins\Plugin.sEncoding.dll

実装したプラグインの呼び出され方

基本的には、実装済みの文字コードの一覧(リスティング)とか、文字コード名の文字列を指定して、
Encodingオブジェクトを返したり・・・そんな感じで呼び出されるような感じ。

他のプラグインからも呼び出されたりするだろう。

という感じ。


実装するインターフェイス

以下のインターフェイスを継承したクラスを実装すればよい

  • IPlugin.dll 中の jp.dip.rocketeer.Plugins.IPluginCharset インターフェイス

このクラス一つだけ実装すればよい。


jp.dip.rocketeer.Plugins.IPluginCharset インターフェイスで定義しているメソッド/プロパティ

実装する必要があるのは以下

jp.dip.rocketeer.Plugins.IPluginCharsetインターフェイスで定義されているのは、以下のとおり

Dictionary<String, String> ListDescription()
引数文字列などを返す。基本的は「文字コード名(String)」「文字コード名(String)」というKeyもValueも同じ値のディクショナリでよいと思う。使うのはKeyの方だけど。
Encoding CreateEncoding(String name, ref String errMsg)
名称から文字コードのオブジェクト(Encoding クラスのインスタンス)の実体を作成する。「name」で指定した文字コード(System.Text.Encoding)(おそらくListDescription()のKeyの方が渡されると思う)を返す。自担当のものでなければnullを返す。もしエラーがあるならerrMsgに入れる。
Dictionary CreateAllEncoding()
全ての文字コードを返す

jp.dip.rocketeer.Plugins.IPluginBaseインターフェイスで定義されている分については、インターフェイス IPluginBase についてを参照


目次へ戻る

目次というか最初の一歩

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?