我正在使用nameof函数将属性名称作为字符串获取:
public bool IsRunning => ...;
...
RaisePropertyChanged(nameof(IsRunning));
Resharper通过警告强调了这一点:
使用调用者信息属性
传递给参数的显式参数
代码有效,我只是想知道上面的警告是否值得我担心。
答案 0 :(得分:22)
只是想知道上述警告是否值得我担心。
如果附加了CallerMemberName
属性,则不必显式传递值,因为该属性将完全符合您的要求。它将找到呼叫者姓名并使用它,使您的nameof
声明变得多余。这当然假设您从实际的属性实现中调用RaisePropertyChanged
。
ReSharper将这些调用标记为冗余when you explicitly pass a string literal。它应该强制使用与nameof
相同的逻辑。
答案 1 :(得分:3)
只要从IsRunning
属性调用您的代码(这使得警告有效。在这种情况下指定属性名称将是多余的)。它似乎并没有这样做。
警告只是告诉您RaisePropertyChanged
在属性上设置了CallerMemberNameAttribute
,它应该是。可以安全地忽略。