Можно ли при реализации INPC получить значение измененного свойства, а не только его имя?

Я использую INotifyPropertyChanged, чтобы мои объекты домена в библиотеке классов могли уведомлять о ходе выполнения своих методов. Это не связано с ситуациями WPF или DataBinding.

Я прочитал документацию о событии PropertyChanged, а PropertyChangedEventArgs имеет только свойство PropertyName:

Событие PropertyChanged возникает при изменении свойства компонента. Объект PropertyChangedEventArgs указывает ИМЯ измененного свойства.

PropertyChangedEventArgs предоставляет свойство PropertyName для получения ИМЯ измененного свойства.

Проблема в том, что мне нужно получить ЗНАЧЕНИЕ измененного свойства, а не его имя, поэтому я спрашиваю:

Есть ли способ получить значение свойства в аргументах события PropertyChanged?

(потому что если нет, думаю, мне придется создать себе событие ReportProgress, похожее на класс BackgroundWorker, верно?)

Спасибо за чтение.


person heltonbiker    schedule 20.11.2013    source источник
comment
Зачем тебе NPC для этого? Используйте IProgress<T>/Progress<T>.   -  person Mike Zboray    schedule 20.11.2013
comment
@mikez К сожалению, я использую C # 4.0 в VisualStudio 2010 ... Знаете ли вы какую-либо другую альтернативу INPC? Благодарю вас!   -  person heltonbiker    schedule 20.11.2013


Ответы (1)


Вы все еще можете получить значение, обработав PropertyChanged. Просто используйте имя, чтобы вернуться и получить значение.

someObject.PropertyChanged += (sender, e) => {
    var value = sender.GetType()
        .GetProperty(e.PropertyName)
        .GetValue(sender, null);
    // do something with value?
};

Ознакомьтесь с Type.GetProperty(). и PropertyInfo.GetValue().

person canon    schedule 20.11.2013