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
相同的逻辑。
我正在使用 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
相同的逻辑。