Устранение / устранение исключений NullReferenceException в ViewModels - PullRequest
1 голос
/ 28 апреля 2011

У меня есть приложение WPF / C #, использующее легкую среду MVVM.Однако, когда он рендерит некоторые страницы, к нескольким полям в одной из моделей представления обращаются до инициализации представления, что приводит к NRE.

Я использовал простое решение добавления операторовв геттерах, похожих на if (obj==null) return new object();, который, кажется, исправляет NRE, но это не кажется мне очень хорошим решением.Есть ли лучший способ решить эту ситуацию?

1 Ответ

1 голос
/ 28 апреля 2011

Решение, которое вы описали, выглядит как Шаблон проектирования нулевого объекта . Если вы не хотите создавать новые объекты для каждого получателя, вы можете использовать для этого экземпляр singleton:

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 ); }
}
...