Resharper强调使用nameof“使用调用者信息属性传递给参数的显式参数”

时间:2015-08-07 10:13:20

标签: c# c#-6.0 resharper-9.0 nameof

我正在使用nameof函数将属性名称作为字符串获取:

public bool IsRunning => ...;

...
RaisePropertyChanged(nameof(IsRunning));

Resharper通过警告强调了这一点:

  

使用调用者信息属性

传递给参数的显式参数

代码有效,我只是想知道上面的警告是否值得我担心。

2 个答案:

答案 0 :(得分:22)

  

只是想知道上述警告是否值得我担心。

如果附加了CallerMemberName属性,则不必显式传递值,因为该属性将完全符合您的要求。它将找到呼叫者姓名并使用它,使您的nameof声明变得多余。这当然假设您从实际的属性实现中调用RaisePropertyChanged

ReSharper将这些调用标记为冗余when you explicitly pass a string literal。它应该强制使用与nameof相同的逻辑。

答案 1 :(得分:3)

只要从IsRunning属性调用您的代码(这使得警告有效。在这种情况下指定属性名称将是多余的)。它似乎并没有这样做。

警告只是告诉您RaisePropertyChanged在属性上设置了CallerMemberNameAttribute,它应该是。可以安全地忽略。