.NET4.0ベータ2の新しいSystem.ComponentModel.Composition名前空間で遊んでいます。これはManagedExtensibilityFrameworkとも呼ばれます。
インポートが:をMonkey
インポートする次のC#の例を使用します。Banana
public interface IBanana
{
}
[Export(typeof(IBanana))]
public class Banana : IBanana
{
}
public class Monkey
{
[Import(typeof(IBanana))]
public IBanana Banana { get; set; }
}
ただし、次のようにサルを作成しようとすると、「このオブジェクトは初期化されていません。プロパティ'SourceProvider'を設定する必要があります。」InvalidOperationException
というメッセージが表示されます。
var exportProvider = new CatalogExportProvider(new TypeCatalog(typeof(Banana)));
var container = new CompositionContainer(exportProvider);
var monkey = new Monkey();
container.ComposeParts(monkey);
ここで何が欠けていますか?カタログをCatelogExportProviderでラップせずに直接渡すことができることは知っていますが、上記も機能しないのでしょうか。