我的解决方案中有一个静态类,用于处理各种程序集。我想通过MEF链接它们,所以我在类中创建了一个字段。
[Import(typeof(A))]
static private A _a1;
然后我有一个方法,将程序集名称作为参数传递给该方法:
public static A LoadPackage(string filePath)
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(filePath));
var _container = new CompositionContainer(catalog);
???
}
那么现在有没有办法从文件路径指定的程序集中导入类型?
我不能这样做:
_container.ComposeParts(this);
因为类是静态的,我也不能这样做
_container.ComposeParts(_a1);
(一开始这可能是完全错误的)因为A
没有任何构造函数(所以_a1
一片空白)
MEF 旨在创建和初始化objects为你。它不处理静态类中的状态。
我建议您将类及其字段设为非静态,并用[PartCreationPolicy(CreationPolicy.Shared)]
如果你想强制执行单例行为。
也可以看看这另一个问题 https://stackoverflow.com/questions/4484619/does-mef-lend-any-value-to-the-singleton-pattern关于 MEF 和单例模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)