【发布时间】:2016-03-31 15:39:47
【问题描述】:
有没有办法在 getter/setter 中获取当前属性的名称?
类似这样的:
public string MyProperty
{
get { return base.Get<string>(nameof(ThisProperty)); }
set { base.Set<string>(nameof(ThisProperty), value); }
}
nameof(ThisProperty) 应该解析为“MyProperty”。
【问题讨论】:
-
nameof(MyProperty)应该可以正常工作吗? -
为什么要出现?写
nameof(MyProperty)有什么问题? -
这在
MyProperty名称可能更改的情况下很有用:然后,您必须记住更新nameof(whatever),尽管Visual Studio IDE 应该会发现这个问题。 -
@levelonehuman 是的,IDE 应该抓住这一点,因为这是(afaik)引入
nameof的主要原因之一。 -
我在使用 MVVM 的
RaisePropertyChanged(nameof(ThisProperty))方法并尝试在生成新属性时避免剪切和粘贴问题时遇到了这个问题。然后我更仔细地查看了 MVVMLight 的方法签名,发现它们已经为RaisePropertyChanged()定义为public virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null);的重载,正是为此目的:-)