0

我正在使用 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:"};
    }
}
4

0 回答 0