4
我正在玩.NET 4.0 beta 2中的新名称空间System.ComponentModel.Composition,也称为Managed Extensibility Framework。必须设置MEF异常“'SourceProvider'”。
我用下面的C#示例,其中Monkey
进口了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中,但是不应该也可以工作?
我通过用反射器检查System.Component.Composition.dll得出了相同的结论。至于要手动创建ExportProviders的原因,如果您希望构建可以回退默认值的容器而不抱怨多个匹配导出,则这是必需的。 – 2009-12-17 22:31:20