Странное исключение NullReferenceException с реализацией INotifyPropertyChanged

Я реализую INotifyPropertyChanged в базовом классе следующим образом:

public class NotifyPropertyChangedBase : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void RaisePropertyChanged(string propertyName)
    {
        var propChangedHandler = PropertyChanged;

        if (propChangedHandler != null)
        {
            var args = new PropertyChangedEventArgs(propertyName);
            propChangedHandler(this, args);
        }
    }
}

Я использую его следующим образом:

RaisePropertyChanged("Name");

Я получаю исключение NullReferenceException, в то время как аргументы, «this» и обработчик НЕ являются нулевой. Может ли кто-нибудь пролить свет на это?

Спасибо.

-> Полная трассировка стека исключения: http://pastebin.com/bH9FeurJ

UPDATE Исключение возникает, когда я перезаписываю экземпляр класса, который содержит это свойство. Упрощенный пример:

public class Person : INotifyPropertyChanged
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            RaisePropertyChanged("Name");
        }
    }

// More properties etc.
}

-snip-

public class ViewModel
{
    private Person _dummyPerson;
    public Person DummyPerson
    {
        get { return _dummyPerson; }
        set
        {
            _dummyPerson = value;
            RaisePropertyChanged("DummyPerson");
        }
    }

    public void Foo()
    {
        DummyPerson = new DummyPerson(); 
        // this line throws the NRE, strangly enough the very FIRST time it works fine
    }
}

-snip-

Я использую этот DummyPerson и его свойство Name для привязки данных к пользовательскому интерфейсу. Вторая и все последующие попытки приводят к исключению NullReferenceException .

6
задан rumblefx0 14 December 2011 в 13:49
поделиться