Редактирование 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));
}
Можно ли каким-либо образом отредактировать автогенерированный код? Для меня это не так понятно.
Ответы
Ответ 1
Нет, вы не можете редактировать автоматически сгенерированный код, потому что он должен обрабатывать множество возможностей при генерации - например, С# 6 использует оператор ?.
, и он также должен обрабатывать, когда событие уже существует и уже было инициализировано.
Если вы хотите использовать сокращенную версию, у которой нет локальной переменной и нулевой проверки, вы можете сначала создать событие и инициализировать его с помощью = () => { };
перед созданием метода OnPropertyChanged
. Тем не менее, лучше всего сохранить локальную проверку var + null для обеспечения безопасности потоков.