【MEF】Exportクラスを使ってみる。
- 2010.05.20 Thursday
- 21:13
Exportクラス
エクスポートを表します。これは、遅延作成されるエクスポート オブジェクトと、そのオブジェクトを記述するメタデータで構成される型です。
名前空間: System.ComponentModel.Composition.Primitives
アセンブリ: System.ComponentModel.Composition (System.ComponentModel.Composition.dll 内)
属性付きプログラミングモデルではExport属性で指定されたパーツを格納するオブジェクトがExportオブジェクトにあたると思うのですが、とりあえず使ってみました。
using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Primitives;
namespace MEFSample
{
class Program
{
static void Main(string[] args)
{
var export = new Export(AttributedModelServices.GetContractName(typeof(A)), () => new A("A Say."));
ExportDefinition definition = export.Definition;
Console.WriteLine("コントラクタ名: " + definition.ContractName);
var a = export.Value as A;
if (a != null)
a.Say();
}
}
class A
{
public A(string msg)
{
_msg = msg ?? string.Empty;
}
public void Say()
{
Console.WriteLine(_msg);
}
private readonly string _msg;
}
}
------------
実行結果
コントラクタ名: MEFSample.A
A Say.