しくみ Edit

  • ラッパー部とプラグイン本体の2つのDLL
  • Chararina本体はC++/CLIで書かれたラッパー部DLLをロード
  • ラッパー部はChararina側の持つシステム関数等のラッパーを持つ
    • Chararina本体の関数をマネージオブジェクトでラップしてC#側から呼べるようにする
    • Chararina本体からのコールバックをC#側のメソッド呼び出しに翻訳する
  • ラッパー部はプラグイン本体のアセンブリを読み込んでインスタンス生成

ToDo Edit

プラグイン本体は別のAppDomainで動かしたい Edit

  • うまくいかない
    • Object^ obj = appDomain->CreateInstanceFromAndUnwrap(...);
    • IPlugin^ plugin = safe_cast<IPlugin^>(obj);
    • System.InvalidCastException: 透過プロキシを型 'PWSPlugin2Net.IPlugin' にキャストできません。

複数アセンブリをロードしたい Edit

  • ラッパー部は1プラグインにしてプラグイン本体部を追加できるように
  • 読み込み許可設定とか付けないとダメかも

オンラインアップデート Edit