Это просто то, о чем я думал, когда я изучал атрибуты, и я слишком много использовал INotifyPropertyChanged, это просто, и идея, и я хотел бы услышать некоторые мнения об этом (я знаю, что это потребует некоторой работы над компилятор, а не на стороне потребителя)
Поскольку INotifyPropertyChanged используется с одним и тем же шаблоном большую часть времени ... точно так же, как вызов метода, который запускает событие с именем свойства, может ли он быть спроектирован как и атрибут и с использованием авто-свойств? Чтобы компилятор знал, что нужно добавить вызов в событие PropertyChanged?
Так что, если у нас есть класс ....
public class DemoCustomer : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private string companyNameValue = String.Empty;
...
}
Вместо объявления свойства
public string CompanyName
{
get
{
return this.companyNameValue;
}
set
{
if (value != this.companyNameValue)
{
this.companyNameValue = value;
NotifyPropertyChanged("CompanyName");
}
}
}
мы могли бы сделать что-то подобное, если мы можем указать компилятору по этому атрибуту, что он должен сгенерировать вызов PropertyChanged с именем свойства, если новое значение отличается от предыдущего
[NotifyPropertyChanged]
public string CompanyName
{
get;set;
}
Мы все еще могли бы сохранять кодирование по-старому для некоторых нестандартных поведений, если не использовать Атрибут ..