Я разрабатываю модели просмотра участков, которые:
1) Все должны реализовать INotifyPropertyChanged для привязки к пользовательскому интерфейсу.
2) Установщики свойств должны поднимать PropertyChanged при изменении.
3) Событие PropertyChanged должно предоставить правильное имя свойства.
Если вы (как и я) привязались к написанию чего-то вроде этого:
public string Name
{
get
{
return _name;
}
set
{
if (_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
Затем реорганизуйте этот метод следующим образом и иногда забудьте обновить литерал имени свойства:
string _fundName;
public string FundName
{
get
{
return _fundName;
}
set
{
if (_fundName != value)
{
_fundName = value;
RaisePropertyChanged("Name");
}
}
}
А затем потратьте день на отладку, почему ваш пользовательский интерфейс не обновляется, а привязка данных не работает должным образом.
Тогда все, что нам нужно, это какое-то волшебство.
Что, если мне просто нужно написать это:
[Magic] // implicit transformation
public string FundName { get; set; }
или если у меня много свойств:
[Magic]
public class MyViewModel
{
public string FundName { get; set; }
public string FundType { get; set; }
[NoMagic] // suppress transformation
public int InternalId { get; set; }
}
Поэтому я только что разработал задачу MSBuild, чтобы проделывать эту магию после сборки (http://kindofmagic.codeplex.com ).
Вопрос в том, какую волшебную постобработку вы хотели бы больше?
Имеет ли смысл автоматическая реализация INotifyPropertyChanging?