MEF导入属性在运行时激活的类中为null

时间:2018-05-16 08:20:40

标签: c# .net mef

我有一个工厂,它返回一个类实例(Object Factory)

var object = Activator.CreateInstance(type) as IObjectBase; 
return object;

然后在我的IObjectBase中,当我尝试在控制器中执行某些操作时,所有导入值都为null

[Import] public IObjectFactory ObjectFactory {get; set;}

var getNewObject = ObjectFactory.GetObject(); 
getNewObject.DoSomething();

这就是问题所在,这里的所有导入服务都是null

[Export(typeof(IObjectBase))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class ObjectBase : IObjectBase
{
    [Import] public IService SomeService {get; set;}
}

1 个答案:

答案 0 :(得分:0)

发现这个有趣,因为Activator.CreateInstance在运行时创建了一个类的实例(如果我错了,请纠正我)因此,MEF不能在这里构建导入。

我使用了ServiceLocator.GetInstance(IObjectBase)来代替Activator.CreateInstance