Это невозможно сделать с помощью nameof
, но есть еще лучший способ (доступный с C # 5). Вы можете сделать параметр propertyName
опционным и применить к нему атрибут CallerMemberName
:
protected void Set<T>(T value, [CallerMemberName] string propertyName = null)
{
...
}
protected T Get<T>([CallerMemberName] string propertyName = null)
{
...
}
Теперь, если вы опускаете аргумент для propertyName
, текущее имя участника передается неявно:
public string MyProperty
{
get { return base.Get<string>(); } // same as calling Get<string>("MyProperty")
set { base.Set<string>(value); } // same as calling Set<string>(value, "MyProperty")
}