Прежде всего, я использую .NET Framework 3.5 C # 3.0 и Visual Studio 2008.
Сказав это ... При использовании шаблона MVVM в приложениях WPF я всегда использую свойства модели представления для привязки к объектам в представлении. При вызове OnPropertyChanged из реализации набора я всегда жестко кодировал имя свойства в виде строки.
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
if (_myProperty == value) return;
_myProperty = value;
OnPropertyChanged("MyProperty");
}
}
Так что я всегда думаю, есть ли какой-нибудь способ избежать жестко запрограммированного имени свойства.
Я знаю, что есть такие методы, как использование nameof, как объяснено здесь и здесь , но это доступно только в C # 6.0 (.NET Framework 4.6 и выше).
Также существует атрибут CallerMemberName, как объяснено здесь и здесь , но снова он был выпущен и доступен только в C # 5.0 (.NET Framework 4.5) и более поздних версиях.
Поэтому я использую .NET Framework 3.5 C # 3.0, поэтому я не могу использовать этот подход.
Итак, как я могу избежать жесткого кодирования имени свойства при передаче его в качестве параметра в метод OnPropertyChanged? Я хотел бы решение, которое не ставит под угрозу производительность.