「拡張可能なアプリケーション」とも表現されるアドイン(あるいは、プラグイン)が使えるアプリケーションは、多く存在します。では、C#では、どうやってプログラミングすればよいのでしょうか。
対応したアプリケーションは、アドイン(あるいは、プラグイン)をインストールすることで、機能を追加することができます。 アドイン(あるいは、プラグイン)は、dllとして提供されます。
C#のアプリケーションでどのように作成するかは、プログラミング設計の問題になります。どのように作成するかを考えることは興味深いですが、既に、いくつかのパターンが紹介されています。
アドインに対応したアプリケーションは、独自に一から作成する方法だけでなく、.Netに、C#でアプリケーションを作成すル際に利用できるアドインモデルが用意されています。
アドイン・モデルは、コードのカプセル化技術と密接に関連しているので、GUIを持つC#アプリケーションで利用することが推奨されているMVVMデザインパターンを使用する際にも前提知識として必要となりそうです。
- Managed Add-in Framework (MAF)
.Net 3.5で導入されたアドイン・モデル。拡張機能の特定とアセンブリの読み込みおよびアンロードに重点が置かれている
- Managed Extensibility Framework (MEF)
.Net 4.0で導入された軽量アプリケーション向けのアドイン・モデル。 MAFとの共存が可能です。 発見可能性、拡張性、および移植性に重点が置かれている
- Prism
MVVMフレームワークの1つ
.NET Compiler プラットフォーム (Roslyn)
少し前までは、C#とVBコンパイラは、開発者にとってブラック・ボックスでした。.NETコンパイラ・プラットフォーム (Roslyn)の出現で、これが変化し、開発者は、コンパイラを、コンパイラを拡張するために使用できるサービスとして利用できるようになりました。
Roslynを理解するための良いリソースは、https://github.com/dotnet/roslyn/wiki/Roslyn%200verviewのドキュメントです。
[Rishabh Verma]Visual Studio Extensibility Development
C#で作成するアプリケーションのアドイン
アドインやプラグインに対応したアプリケーションを作成することも大切ですが 対応したアプリケーション向けのアドインやプラグインを作成することも必要です。
Visual Studio Tools for Office (VSTO)
Visual Studio Tools for Office (VSTO)を使用するとC#でOfficeアプリケーションを操作することができます。
RootPro CAD
MEFアプリケーションを作成する
MEFは、アドイン(あるいは、プラグイン)を持つアプリケーションに使われるだけでなく、プログラム内でコードをカプセル化し、コードの再利用がしやするために利用されています。
MVVMデザインパターンを導入しようとして全く理解できない場合は、その前段階となるMEFアプリケーションを作成する方法を確認したほうが理解しやすくなる可能性があります。
COMモデル
MEFの以前には、アドイン(あるいは、プラグイン)の作成には、COMモデルが利用されていました。既存のアプリケーションのアドイン(あるいは、プラグイン)モデルでは、COMモデルがよく使われています。