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(これにより、警告が有効になります。その場合、プロパティ名を指定することは冗長になります)。あなたはそうしていないようです。

警告は、プロパティにセットRaisePropertyChangedがあることを示しているだけです。CallerMemberNameAttribute無視しても安全です。

于 2015-08-07T10:17:11.487 に答える