我有一个使用MVVM光框架的WPF / C#应用程序。但是,当它渲染某些页面时,在View初始化之前,正在访问其中一个viewModel中的一些字段,从而产生NRE。
我一直在使用类似于if (obj==null) return new object();
的getter中添加语句的简单解决方案,它似乎修复了NRE,但这对我来说似乎不是一个非常好的解决方案。有没有更好的方法来解决这种情况?
答案 0 :(得分:1)
您描述的解决方案看起来像Null Object design pattern。如果您不想为每个getter创建新对象,可以使用单例实例:
public sealed class NullObject {
public static readonly NullObject Default = new NullObject();
public static object GetNotNull( object value ) {
return object.ReferenceEquals( value, null ) ? (object)Default : value;
}
}
//....
private object someField;
public object SomeProperty {
get { return NullObject.GetNotNull( this.someField ); }
}