编辑锐化器的属性更改



当我有一个我声明实现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的文档对此我并不清楚。

不,您不能编辑自动生成的代码,因为它在生成时需要处理多种可能性——例如,C#使用?.运算符,它还需要处理事件已经存在并且已经初始化的情况。

如果您确实想使用没有本地变量和null检查的简写版本,那么您可以先创建事件,并在生成OnPropertyChanged方法之前用= () => { };初始化它。然而,为了线程安全,最好保持本地var+null检查。

相关内容

  • 没有找到相关文章

最新更新