我有一个工厂,它返回一个类实例(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;}
}
答案 0 :(得分:0)
发现这个有趣,因为Activator.CreateInstance在运行时创建了一个类的实例(如果我错了,请纠正我)因此,MEF不能在这里构建导入。
我使用了ServiceLocator.GetInstance(IObjectBase)来代替Activator.CreateInstance