Возможный дубликат:
typeafe NotifyPropertyChanged с использованием выражений linq
Я работаю над большим командным приложением, которое страдает от интенсивного использования магических строк в форме NotifyPropertyChanged("PropertyName")
, - стандартной реализации при консультировании Microsoft. Мы также страдаем от большого количества неназванных свойств (работа с объектной моделью для модуля вычислений, который содержит сотни хранимых вычисленных свойств), все из которых связаны с пользовательским интерфейсом.
Моя команда испытывает множество ошибок, связанных с изменениями имен свойств, приводящими к неправильным магическим строкам и разбивающим привязкам. Я хочу решить проблему, выполнив изменения свойств измененных без использования магических строк. Единственные решения, которые я нашел для .Net 3.5, включают лямбда-выражения. (например: Реализация INotifyPropertyChanged - существует ли лучший способ?)
Мой менеджер очень обеспокоен стоимостью исполнения перехода из
set { ... OnPropertyChanged("PropertyName"); }
к
set { ... OnPropertyChanged(() => PropertyName); }
где имя извлекается из
protected virtual void OnPropertyChanged<T>(Expression<Func<T>> selectorExpression)
{
MemberExpression body = selectorExpression.Body as MemberExpression;
if (body == null) throw new ArgumentException("The body must be a member expression");
OnPropertyChanged(body.Member.Name);
}
Рассмотрим приложение, такое как электронная таблица, где, когда изменяется параметр, приблизительно 100 значений пересчитываются и обновляются в пользовательском интерфейсе в режиме реального времени. Делает это изменение настолько дорогостоящим, что это повлияет на отзывчивость пользовательского интерфейса? Я даже не могу оправдать тестирование этого изменения прямо сейчас, потому что потребуется около 2 дней обновления свойств в разных проектах и классах.