微软应该已经实现了一些有趣的东西INotifyPropertyChanged,就像在自动属性中一样,只需指定{get; set; notify;}
我认为这样做很有意义.或者有任何并发症吗?
我们自己可以在我们的属性中实现类似'notify'的内容.是否有一个优雅的解决方案,INotifyPropertyChanged在您的班级实施或唯一的方法是通过提高PropertyChanged每个属性中的事件.
如果没有,我们可以写一些东西来自动生成一段代码来引发PropertyChanged 事件吗?
我开始非常喜欢延伸方法......我想知道是否有人偶然发现了一个真正引起他们注意的人,或者只是发现了聪明.
我今天写的一个例子:
由于其他用户的评论而编辑:
public static IEnumerable<int> To(this int fromNumber, int toNumber) {
while (fromNumber < toNumber) {
yield return fromNumber;
fromNumber++;
}
}
Run Code Online (Sandbox Code Playgroud)
这允许将for循环写为foreach循环:
foreach (int x in 0.To(16)) {
Console.WriteLine(Math.Pow(2, x).ToString());
}
Run Code Online (Sandbox Code Playgroud)
我迫不及待想看其他例子!请享用!
我已经看到用于实现INotifyPropertyChanged的以下模式
private void NotifyPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释var handler = PropertyChanged赋值在检查null之前的必要性与直接检查PropertyChanged == null吗?
谢谢