MEF例外“‘SourceProvider’必须设置。”
-
20-09-2019 - |
题
我在玩弄新的 System.ComponentModel.Composition 在.NET 4.0的β2的命名空间,也被称为托管扩展框架。
我使用其中Monkey
导入一个Banana
下面的C#示例:
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包装,但应该不是上面还工作吗?
解决方案
在CatalogExportProvider需要一个参考回容器。下面的代码应工作:
var exportProvider = new CatalogExportProvider(new TypeCatalog(typeof(Banana)));
var container = new CompositionContainer(exportProvider);
exportProvider.SourceProvider = container;
var monkey = new Monkey();
container.ComposeParts(monkey);
当传递一个目录到构造的容器自动执行此操作。我不认为有很多经常的原因手动创建CatalogExportProvider。
的CatalogExportProvider需要将容器的引用的原因是可能存在与需要由容器被挂接到其他出口提供商满足进口部件在目录
不隶属于 StackOverflow