ComposablePartExportProviderクラス
ComposablePart によって提供される Export オブジェクトへのアクセスを提供します。
名前空間: System.ComponentModel.Composition.Hosting
アセンブリ: System.ComponentModel.Composition (System.ComponentModel.Composition.dll 内)
今度はComposablePartExportProviderを使用してみました。MEFの正しい使い方をしているとは思えませんが、ちょびちょびコードを書いてみて動きを見てみたいのです。いや、MSDNライブラリーを読むのに疲れてコードが書きたくなっただけなのですが・・・
using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.ComponentModel.Composition.Primitives;
namespace MEFSample
{
class Program
{
static void Main(string[] args)
{
var provider = new ComposablePartExportProvider
{
SourceProvider =
new CompositionContainer(new TypeCatalog(new[] {typeof (B)}))
};
var batch =new CompositionBatch();
batch.AddPart(new A());
provider.Compose(batch);
IA a = provider.GetExportedValue<IA>();
a.Say();
}
}
public interface IA
{
void Say();
}
public interface IB
{
void Say();
}
[Export(typeof(IA))]
class A : IA
{
[Import]
public IB B { get; set; }
public void Say()
{
B.Say();
}
}
[Export(typeof(IB))]
class B : IB
{
public void Say()
{
Console.WriteLine("B Say");
}
}
}
あらかじめカタログ経由で用意していたパーツと属性によりパーツとして指定してあるオブジェクトを外部からプロバイダーに入れてみると、あらあら不思議、Import属性が指定された部分にインジェクションされている。というサンプルです。
ちょっと感動。
- 2010.05.21 Friday
- MEF
- 00:30
- comments(0)
- trackbacks(0)


- by art55


















