我要求在整个应用程序中有一个对象(RuleFile
),表示要序列化的文件,例如将与我的应用程序关联的word(* .docs)文件。
我使用Prism 5和MEF作为依赖注入容器。
[Export]
[Serializable()]
public class RuleFile : NotificationBase, IRuleFile { }
现在我使用[Export]
修饰了对象并尝试将其导入MyViewModel
中的一个,但它正在提供null
。
public class MyViewModel : ViewModelBase
{
[Import]
private RuleFile RuleFile; // 'null' coming here
}
请指导我,我错过了什么?或者告诉我任何其他方法来最好地处理这种情况。
答案 0 :(得分:0)
你在检查构造函数中的值吗?直接在属性上修饰的导入将在构造函数之后解析。如果你想访问构造函数中的RuleFile
,你需要像这样设置它
public class MyViewModel : ViewModelBase
{
public RuleFile RuleFile { get; set; }
[ImportingConstructor]
public MyViewModel(RuleFile ruleFile)
{
RuleFile = ruleFile;
}
}
或者,您可以实施IPartImportsSatisfiedNotification
,它会为您提供通知方法,以表明导入已解决。喜欢这个
public class MyViewModel : ViewModelBase, IPartImportsSatisfiedNotification
{
[Import]
public RuleFile RuleFile { get; set; }
public void OnImportsSatisfied()
{
// Signifies that Imports have been resolved
}
}