【发布时间】:2015-07-17 19:51:43
【问题描述】:
新的C# 6.0 nameof 在PropertyChanged 模式中非常棒,可以使用以下方式传播属性更改:
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
_myProperty= value;
OnPropertyChanged(nameof(MyProperty));
}
}
当监听属性更改时,我使用这个(是的,即使是丑陋的硬编码字符串):
private void OnMyObjectPropertyChanged(object sender, PropertyChangedEventArgs args)
{
switch (args.PropertyName)
{
case "MyProperty":
DoSomething();
break;
}
}
使用新的 nameof 表达式,这段代码是否可以编译/工作?
private void OnMyObjectPropertyChanged(object sender, PropertyChangedEventArgs args)
{
switch (args.PropertyName)
{
case nameof(MyObject.MyProperty):
DoSomething();
break;
}
}
【问题讨论】:
-
我认为
nameof(MyObject.MyProperty)不会起作用。MyProperty不是静态的。你需要一个MyObject的实例。 -
是的。 属性名称始终是静态的 @FrédéricHamidi