ReSharper 强调使用 nameof 和 "Explicit argument passed to parameter with caller info attribute"

ReSharper highlights use of nameof with "Explicit argument passed to parameter with caller info attribute"

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

public bool IsRunning => ...;

...
RaisePropertyChanged(nameof(IsRunning));

ReSharper 突出显示警告:

Explicit argument passed to parameter with caller info attribute

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

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

警告只是告诉您 RaisePropertyChanged 在 属性 上设置了 CallerMemberNameAttribute,这是应该的。忽略是安全的。

was just wondering if the above warning is something I should worry about.

当您附加了 CallerMemberName 属性时,您不必显式传递值,因为该属性会为您做这些。它将找到调用者的姓名并使用它,使您的 nameof 声明变得多余。这当然是假设您从实际的 属性 实现中调用 RaisePropertyChanged

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