处理/解决ViewModels中的nullreferenceexception

本文关键字:中的 nullreferenceexception ViewModels 解决 处理 | 更新日期: 2023-09-27 17:53:26

我有一个使用MVVM轻型框架的WPF/c#应用程序。然而,当它呈现一些页面时,其中一个viewmodel中的几个字段在视图初始化之前被访问,这会导致NREs。

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

处理/解决ViewModels中的nullreferenceexception

您描述的解决方案看起来像Null对象设计模式。如果你不想为每个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 ); }
}