Недавно я начал экспериментировать с PostSharp и обнаружил особенно полезный аспект для автоматизации реализации INotifyPropertyChanged. Вы можете увидеть пример здесь. Базовая функциональность превосходна (все свойства будут уведомлены), но есть случаи, когда я мог бы захотеть подавить уведомление.
Например, я могу знать, что конкретное свойство устанавливается один раз в конструкторе и больше никогда не изменится. Таким образом, нет необходимости создавать код для NotifyPropertyChanged. Накладные расходы минимальны, когда экземпляры классов создаются нечасто, и я могу предотвратить проблему, переключившись с автоматически сгенерированного свойства на свойство, поддерживаемое полем, и записав в поле. Однако, поскольку я изучаю этот новый инструмент, было бы полезно узнать, есть ли способ пометить свойство атрибутом, чтобы подавить генерацию кода. Я хотел бы иметь возможность сделать что-то вроде этого:
[NotifyPropertyChanged]
public class MyClass
{
public double SomeValue { get; set; }
public double ModifiedValue { get; private set; }
[SuppressNotify]
public double OnlySetOnce { get; private set; }
public MyClass()
{
OnlySetOnce = 1.0;
}
}