Mefx没有列出进口商

本文关键字:进口商 Mefx | 更新日期: 2023-09-27 18:11:40

我有一个基于mef的模块化应用程序,它已经开始无法导入类。在调试过程中,我一直在使用mefx工具来尝试跟踪核心问题。简而言之,我所有的[Export]声明似乎都是正确的,但ImportImportMany属性似乎都没有被正确处理。

希望这是我的一个简单的错误,但是这个应用程序直到最近才工作。

下面是我编写的一个非常短的测试应用程序以及相应的mefx输出。

using System.ComponentModel.Composition;
namespace ClassLibrary1
{
    public class Class1
    {
        [Import]
        public Class2 myclass;
    }
    [Export]
    public class Class2
    {
    }
}

mexf输出

> mefx /file:ClassLibrary1.dll /parts
ClassLibrary1.Class2
> mefx /file:ClassLibrary1.dll /exports
ClassLibrary1.Class2
> mefx /file:ClassLibrary1.dll /imports
[blank]

我本以为Class1会被列为进口商。建议吗?

Mefx没有列出进口商

不能导入未被MEF引用的类。

试题:

namespace ClassLibrary1
{
    [Export]
    public class Class1
    {
        [Import]
        public Class2 myclass;
    }
    [Export]
    public class Class2
    {
    }
}

也可以在构造函数中导入:

namespace ClassLibrary1
    {
        [Export]
        public class Class1
        {
            [ImportingConstructor]
            public Class1(Class2 c2)
            {
                myclass = c2;
            }
            public Class2 myclass;
        }
        [Export]
        public class Class2
        {
        }
    }

另外,使用ServiceLocator获取Class1(不要使用"new"关键字)。

Class1 myClass1 = ServiceLocator.Current.GetExport<Class1>();
相关文章: