我正在使用 MEF,我的插件目录是c:\dev\plugins
我有一个表格,但是当我打开它时,出现以下错误:
合成产生了一个单一的合成错误。下面提供了根本原因。查看 CompositionException.Errors 属性以获取更多详细信息。1) 导出 'Helper (ContractName="IHelper")' 不可分配给类型 'IHelper'。导致:无法在部件“经理”上设置导入“助手(合同名称 =“IHelper”)”。元素:helper (ContractName="IHelper") --> Manager`
我有两个包含相同导出的程序集,但我DirectoryCatalog
一次只加载其中一个。
此错误似乎只显示在设计器中。当我运行代码时,我没有收到异常并且应用程序运行良好。设计师确实给了我选择,Ignore and Continue
但我做过一次,但失败了,所以我退缩了。
public class Manager
{
private static readonly Manager instance = new Manager();
public static IHelper Helper { get { return Manager.instance.helper; } }
[Import(typeof(IHelper))]
internal IHelper helper { get; set; }
private Manager()
{
using (DirectoryCatalog catalog =
new DirectoryCatalog(@"c:\dev\plugins"))
{
using (CompositionContainer container =
new CompositionContainer(catalog))
{
container.ComposeParts(this);
}
}
}
}
public interface IHelper
{
string LabelText { get; }
}
[Export(typeof(IHelper))]
public class SpecificHelper : IHelper
{
public string LabelText
{
get { return "Id:"};
}
}