Подтвердить что ты не робот

Редактирование 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));
}

Можно ли каким-либо образом отредактировать автогенерированный код? Для меня это не так понятно.

4b9b3361

Ответ 1

Нет, вы не можете редактировать автоматически сгенерированный код, потому что он должен обрабатывать множество возможностей при генерации - например, С# 6 использует оператор ?., и он также должен обрабатывать, когда событие уже существует и уже было инициализировано.

Если вы хотите использовать сокращенную версию, у которой нет локальной переменной и нулевой проверки, вы можете сначала создать событие и инициализировать его с помощью = () => { }; перед созданием метода OnPropertyChanged. Тем не менее, лучше всего сохранить локальную проверку var + null для обеспечения безопасности потоков.