我已按照MSDN中所述的CallerMemberName
类的INotifyPropertyChanged
实现使用了 public event PropertyChangedEventHandler PropertyChanged;
// This method is called by the Set accessor of each property.
// The CallerMemberName attribute that is applied to the optional propertyName
// parameter causes the property name of the caller to be substituted as an argument.
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
属性,如下所示:
CallerMemberName
但是,使用默认参数不符合CLS。但是font[size=1]
只能用于具有默认值的参数...是否有一种常用的方法来解决这种不一致问题,而不必使用硬编码的字符串参数调用notify方法?
答案 0 :(得分:1)
我只是删除了CallerMemberName
属性和默认参数值,这意味着参数不再是可选的,因此方法签名变为:
private void NotifyPropertyChanged(String propertyName)
然后用nameof
运算符提供字符串参数来调用它是一个小的(足够的)更改:
NotifyPropertyChanged(nameof(FooProperty));
这看起来效果很好。
我会暂时搁置这个问题,但是其他人可能会有更好的方法,或者提出这个解决方案的问题。