在ViewModels中处理/解析NullReferenceExceptions

时间:2011-04-28 17:30:25

标签: c# wpf nullreferenceexception

我有一个使用MVVM光框架的WPF / C#应用程序。但是,当它渲染某些页面时,在View初始化之前,正在访问其中一个viewModel中的一些字段,从而产生NRE。

我一直在使用类似于if (obj==null) return new object();的getter中添加语句的简单解决方案,它似乎修复了NRE,但这对我来说似乎不是一个非常好的解决方案。有没有更好的方法来解决这种情况?

1 个答案:

答案 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 ); }
}