【发布时间】:2015-09-16 04:58:29
【问题描述】:
当我有一个我声明实现然后INotifyPropertyChanged 接口的类时,ReSharper 将自动生成此实现:
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
我总是这样编辑:
public event PropertyChangedEventHandler PropertyChanged = delegate { };
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
我可以以某种方式编辑自动生成的代码吗? Resharper 的文档对此我不太清楚。
【问题讨论】:
-
为什么删除线程安全如此重要? Copy > check > invike 是最佳实践。
-
如果您使用的是 VS 2015,我可以理解想要更改为 C# 6 标准,但是这里描述的更改是一个糟糕的更改......
-
有人可以向我解释一下更改此代码如何消除线程安全吗?我不明白为什么这是一个糟糕的选择。当您知道事件已定义并且从不为空时,为什么需要复制/检查/调用?不是好斗的;我真的不明白。
标签: wpf resharper inotifypropertychanged