C# mefx未列出进口商

C# mefx未列出进口商,c#,mef,C#,Mef,我有一个基于MEF的模块化应用程序,它开始无法导入类。在调试过程中,我一直在使用mefx工具来跟踪核心问题。简言之,我所有的[Export]声明似乎都是正确的,但是Import或ImportMany属性似乎都没有被正确处理 希望这对我来说是一个简单的错误,但是应用程序直到最近才开始工作 下面是我编写的一个非常简短的测试应用程序,以及相应的mefx输出 using System.ComponentModel.Composition; namespace ClassLibrary1 { p

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

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

下面是我编写的一个非常简短的测试应用程序,以及相应的
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
被列为进口商。建议?

您不能在MEF未引用的类中导入

尝试:

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

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();

这不是我问题的原因,但我学到了一些新东西!
namespace ClassLibrary1
    {
        [Export]
        public class Class1
        {
            [ImportingConstructor]
            public Class1(Class2 c2)
            {
                myclass = c2;
            }

            public Class2 myclass;
        }

        [Export]
        public class Class2
        {
        }
    }
Class1 myClass1 = ServiceLocator.Current.GetExport<Class1>();