web-dev-qa-db-ja.com

Resharperは、「呼び出し元情報属性を持つパラメーターに渡される明示的な引数」でのnameofの使用を強調しています

Nameof関数を使用して、プロパティ名を文字列として取得しています。

public bool IsRunning => ...;

...
RaisePropertyChanged(nameof(IsRunning));

Resharperはこれを警告で強調しています:

呼び出し元情報属性を持つパラメーターに渡される明示的な引数

コードは機能しますが、上記の警告が私が心配する必要があるものかどうかだけを考えていました。

27
Tim Rutter

上記の警告が私が心配すべき何かであるかどうかちょうど疑問に思っていました。

CallerMemberName属性がアタッチされている場合、属性がそれを正確に行うため、明示的に値を渡す必要はありません。呼び出し元の名前を見つけて使用し、nameof宣言を冗長にします。もちろん、これは実際のプロパティ実装からRaisePropertyChangedを呼び出すことを前提としています。

ReSharperはこれらの呼び出しを冗長としてマークします 文字列リテラルを明示的に渡した場合nameofでも同じロジックを強制する必要があります。

23
Yuval Itzchakov

IsRunningプロパティからコードが呼び出される限り(警告が有効になります。その場合、プロパティ名の指定は冗長になります)。あなたがそうしているようには見えません。

警告は、RaisePropertyChangedCallerMemberNameAttributeがプロパティに設定されていることを通知するだけです。無視しても安全です。

3
Patrick Hofman