我正在使用MEF,我的插件目录为c:\dev\plugins
我有一个表单,但是当我打开它时,我有以下错误:
该组合物产生单一组成错误。根本原因如下。查看CompositionException.Errors属性以获取更多详细信息。 1)导出'Helper(ContractName =“IHelper”)'不能分配给'IHelper'类型。导致:无法在部分'Manager'上设置import'helper(ContractName =“IHelper”)'。元素:助手(ContractName =“IHelper”) - >经理`
我有两个包含相同导出的程序集,但我使用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:"};
}
}