10

健全性チェック方法があります

void IsNotNull<T>(T obj){...}

呼び出し

IsNotNull(obj); 

これを置き換えて、文字列型 (メッセージ) の 2 番目のパラメーターを取る他のオーバーロードを呼び出したい

void IsNotNull<T>(T obj, string message){...}

だから私は呼び出しを次のように変更したい

IsNotNull(obj, "obj is null");

resharper の検索パターンと置換を使用してこれを達成しようとしています。

だから私の検索パターンは次のとおりです: IsNotNull($args$)-これは正常に機能し、メソッド呼び出しを検索します

置換パターン: IsNotNull($args$, "$args$ is null") - これは何もしません

私もこれを試しましたIsNotNull($args$, """" + $args$ + """")

--編集済み-- (引数と識別子の両方について) 正しい文言を示す提案ボックスですが、適用されると異なります。Resharper 6 を使用しています

ここに画像の説明を入力

提案を適用した後、これを取得します ここに画像の説明を入力

[パターンの編集] をクリックすると ここに画像の説明を入力

4

3 に答える 3

7

$args$検索と置換で定義されているパラメータは何ですか? にするとIdentifier、置き換えが機能するはずです:

検索: IsNotNull($args$)- 置換はどこ$args$にありますか:Identifier
IsNotNull($args$, "$args$ is null")

必要な結果が得られるはずですIsNotNull(obj, "obj is null")

于 2012-12-31T14:55:40.907 に答える
1

最も簡単な方法は、元のメソッドを次のように書き直すことです。

void IsNotNull<T>(T obj){
    IsNotNull(obj, "obj is null");
}

次に、メソッドシグネチャをクリックし、[リファクタリング]-> [インラインメソッド](Ctrl + R、Ctrl + I)を選択します。元のメソッドシグネチャを保持する必要がある場合は、それが可能です。または、[インラインメソッド宣言を削除する]チェックボックスをオンにすることもできます。

編集:hmemcpyのソリューションは7.1で機能するように見えるので、アップグレードをお勧めします。ただし、それが不可能な場合は、VisualStudioで次の正規表現の検索と置換を試してください。

Find: IsNotNull\(([^\),]+)\);
Replace: IsNotNull($1, "$1 is null");

[正規表現を使用する]がオンになっていることを確認し、[検索:]が[ソリューション全体]になっている必要があります。

于 2013-01-02T16:40:54.223 に答える
1

このパターンを使用することを検討できます。

IsNotNull($args$, string.Format("{0} is null", $args$))

ReSharper 7.1 で完璧に動作します。

R# は、通常、文字列リテラル内の引数式を評価したくないようです。あなたのパターンを考えると

IsNotNull($args$, "$args$ is null")

奇数IsNotNull(5);に置き換えIsNotNull(5, 5);

于 2012-12-31T14:10:45.377 に答える