32

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

public bool IsRunning => ...;

...
RaisePropertyChanged(nameof(IsRunning));

ReSharper 用警告强调了这一点:

显式参数传递给具有调用者信息属性的参数

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

4

2 回答 2

25

只是想知道上述警告是否是我应该担心的。

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

当您显式传递字符串文字时, ReSharper 会将这些调用标记为多余。它也应该强制使用相同的逻辑nameof

于 2015-08-07T10:17:56.357 回答
4

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

警告只是告诉您在属性RaisePropertyChangedCallerMemberNameAttribute设置了它应该的设置。忽略它是安全的。

于 2015-08-07T10:17:11.487 回答