我正在使用 .NET 4.0 beta 2 中的新System.ComponentModel.Composition命名空间,也称为Managed Extensibility Framework。
我使用以下 C# 示例,其中 aMonkey
导入 a Banana
:
public interface IBanana
{
}
[Export(typeof(IBanana))]
public class Banana : IBanana
{
}
public class Monkey
{
[Import(typeof(IBanana))]
public IBanana Banana { get; set; }
}
但是,当我尝试按如下方式编写猴子时,我收到一条InvalidOperationException
消息“此对象尚未初始化 - 必须设置属性‘SourceProvider’。 ”:
var exportProvider = new CatalogExportProvider(new TypeCatalog(typeof(Banana)));
var container = new CompositionContainer(exportProvider);
var monkey = new Monkey();
container.ComposeParts(monkey);
我在这里想念什么?我知道我可以直接传递目录而不将其包装在 CatelogExportProvider 中,但上述方法不应该也可以吗?