概要 †.NET Framework 4とSilverlight 4からManaged Extensibility Framework(以降MEF)が追加されました。 MEFは、拡張可能なアプリケーションを作成するための一連の機能を提供するライブラリです。MEFが誕生する前に、アプリケーションのプラグインの作成には、プラグイン機能を別アセンブリに実装するため、指定するフォルダのアセンブリから作成されたプラグインアセンブリを検索・認識する必要ながあります。MEFを使えば、この手間を手軽に実現できます。 カタログ †MEFにおいて、プラグインを探索するための手段にカタログがあります。 カタログの種類
カタログを利用して、指定するフォルダにプラグインを検索する例: // プラグインフォルダの存在チェック var folder = @".\Plugins"; if (!Directory.Exists(folder)) { return; } // 「カタログ」を利用してプラグインを探索 var catalog = new DirectoryCatalog(folder); コンテナ †MEFにおいて、プラグインを認識するための手段にコンテナがあります。 CompositionContainer コンテナを利用して、カタログからプラグインを認識する例: // 「コンテナ」を利用してプラグインを認識 var container = new CompositionContainer(catalog); container.ComposeParts(this); Import属性 †MEFにおいて、Importで指定した型のインスタンスにプラグインを格納します。 Import の種類
Export属性 †MEFにおいて、Exportでプラグインクラスを指定します。 クラス、プロパティ、フィールド、またはメソッドに対して使用できます。 Export の種類
参考資料 †MEFは、CodePlexで開発が行われていて公式サイトは以下になります。 MSDN内のMEFのサイト |