C#でプラグイン機能を開発に挑戦してみた(1)
開発環境をDLLで提供してみる

どもです。

表題の通り今回は、C#でプラグイン機能の開発に挑戦してみました。

1. 開発環境

毎度ですが、開発環境です。

開発/実行環境
項目 内容
OS Windows10 Pro(1909)
CPU i7-8700
メモリ 16GB
IDE Visual Studio Community 2019
Version 16.11.2
.NET .NET Framework 4.7

2. 挑戦してみた内容

プラグインのC#での実装方法は、ネットで調べれば沢山見つかります。
そのため本エントリでは、実装方法の詳細については記載しません。
本エントリでは、単純にプラグインを実装するのではなく、「プラグインの開発環境をDLLとして提供する」ことを主眼において、挑戦した内容について書きます。

3. サンプルアプリケーション

今回は、プラグインの開発方法でよく例題となっている、以下のようなアプリケーションについて考えてみます。


4. 開発環境の提供

前出のプログラムにおける、プラグインの開発環境の提供について考えます。
「PluginA」と「PluginB」のインターフェースとなる「IPlugin」、および「IPlugin」の実行結果である「PluginOutput」クラスを、「開発環境」としてDLLで提供します。



そして、「PluginA」や「PluginB」といった「プラグイン本体」は、、このDLLを使用して作成するようにします。

5. 提供された開発環境を使ってみる

それでは、作成した開発環境を使って、実際にプラグインを開発してみます。
IDEはVisualStudioを使用し、前出の「PluginA」と「PluginB」を作成します。
各プラグインおよびそれを使用するプログラムは、それぞれ下図に示すようにプロジェクトを分割して作成します。



なお、この図にある「動的ローディング」は、プラグインの開発を解説しているサイトのほとんどで紹介されています。
詳細は、それらを参照してください。

6. まとめ

今回は、C#でのプラグイン機能の開発について書きました。
特に、プラグインの開発環境をDLLとして提供するための、VisualStudioのプロジェクトの分割と参照の設定に着目して書いてみました。
よくよく考えてみれば
コードを一切載せていませんが、必要なコードは別のサイトを参照していただければと思います。

ではっ!

ex. 参考にしたサイト

DOBON.NET
Qiita
Nomu×2.Net