编辑Resharper的INotifyPropertyChanged

时间:2015-06-29 16:14:48

标签: wpf resharper inotifypropertychanged

当我有一个我声明实现然后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的文档对我来说不太清楚。

1 个答案:

答案 0 :(得分:5)

不,你不能编辑自动生成的代码,因为它需要在生成时处理许多可能性 - 例如C#6使用?.运算符,它还需要处理事件已存在且已初始化的时间。

如果您确实想使用没有局部变量和空检查的速记版本,那么您可以先创建事件,然后使用= () => { };对其进行初始化,然后再生成OnPropertyChanged方法。但是,为了线程安全,最好保留本地var + null检查。

相关问题