.NET 4.0

概要

.NET Framework 4とSilverlight 4からManaged Extensibility Framework(以降MEF)が追加されました。

MEFは、拡張可能なアプリケーションを作成するための一連の機能を提供するライブラリです。MEFが誕生する前に、アプリケーションのプラグインの作成には、プラグイン機能を別アセンブリに実装するため、指定するフォルダのアセンブリから作成されたプラグインアセンブリを検索・認識する必要ながあります。MEFを使えば、この手間を手軽に実現できます。

カタログ

MEFにおいて、プラグインを探索するための手段にカタログがあります。

カタログの種類

  • DirectoryCatalog
     ディレクトリを指定し、そのディレクトリから探索するカタログ
  • AssemblyCatalog
     アセンブリを指定し、そのアセンブリから探索するカタログ
  • TypeCatalog
     型を指定し、その型から探索するカタログ
  • AggregateCatalog
     以上のカタログを一纏めにしてくれるちょっと特殊なカタログ

カタログを利用して、指定するフォルダにプラグインを検索する例:

// プラグインフォルダの存在チェック
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 の種類

  • ImportAttribute
     単一のオブジェクトを格納する時に使うImport属性
  • ImportManyAttribute
     複数のオブジェクトを格納する時に使うImport属性
  • ImportingConstructorAttribute
     特定のコンストラクタを指定したい時に使うちょっと特殊なImport属性

Export属性

MEFにおいて、Exportでプラグインクラスを指定します。

クラス、プロパティ、フィールド、またはメソッドに対して使用できます。

Export の種類

  • ExportAttribute
     オブジェクトを提供する時に使うExport属性
  • InheritedExportAttribute
     サブクラスを含める形でクラスを提供する時に使うExport属性

参考資料

MEFは、CodePlexで開発が行われていて公式サイトは以下になります。

http://mef.codeplex.com/

MSDN内のMEFのサイト

Managed Extensibility Frameworkの概要


トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:32:10 (1627d)

G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMITȂ1~] COiq COsیI