Разработвам модели за изглед на партиди, които са:
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?