【发布时间】:2010-12-12 09:00:07
【问题描述】:
这只是我在学习 Attributes 时的想法,而且我使用 INotifyPropertyChanged 太多了,只是和 Idea,我想听听一些关于它的意见。(我知道这需要在编译器而不是消费者端)
由于 INotifyPropertyChanged 大部分时间都与相同的 Pattern 一起使用.. 就像使用属性名称调用触发事件的方法一样,它可以设计为 Attribute 并使用 Auto-Properties 吗?以便编译器知道它需要添加对 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;
}
在不使用属性的情况下,我们仍然可以为某些自定义行为保持旧的编码方式..
【问题讨论】: