新C# 6.0 nameof
使用类似传播特性的变化是在PropertyChanged
模式极大:是否可以在switch语句中使用表达式的名称?
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;
}
}
使用新的表达式名称将此代码编译/工作?
private void OnMyObjectPropertyChanged(object sender, PropertyChangedEventArgs args)
{
switch (args.PropertyName)
{
case nameof(MyObject.MyProperty):
DoSomething();
break;
}
}
我不认为'nameof(MyObject.MyProperty)'会起作用。 'MyProperty'不是静态的。你需要一个'MyObject'的实例。 –
它是。 *属性名称*永远是静态的@FrédéricHamidi –