我有一个使用MVVM light框架的WPF/C#应用程序。然而,当它呈现一些页面时,在视图初始化之前,会访问其中一个viewModels中的几个字段,这会导致NREs。
我一直在使用一个简单的解决方案,即在getters中添加类似于if (obj==null) return new object();的语句,这似乎可以修复NRE,但对我来说,这似乎不是一个很好的解决方案。有没有更好的方法来解决这种情况?
发布于 2011-04-29 01:38:33
您所描述的解决方案看起来像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 ); }
}https://stackoverflow.com/questions/5822648
复制相似问题