2

新しいライブラリですべての FxCop ルールを満たそうとしています。そのため、すべての String.Format() 呼び出しに対して IFormatProvider を指定する必要があります。例:

public string Example(string value) {
    return string.Format(CultureInfo.CurrentCulture, 
                         "You entered: {0}", value);
}

CultureInfo を何百回も指定するのは非常に面倒なので、ヘルパーを作成しました。

public string Example2(string value) {
    return CurrentCulture("You entered: {0}", { value });
}

private string CurrentCulture(string value, object[] objects) {
    return string.Format(CultureInfo.CurrentCulture, value, objects);
}

これはうまくいきますが、パーツの形状に誤りがあると、Resharper の警告がすべて失われます"You entered: {0}", { value }

おそらく、短いエイリアスを使用するのが最善です。

public string Example3(string value) {
    return string.Format(Current(), "You entered: {0}", value);
}

private CultureInfo Current() {
    return CultureInfo.CurrentCulture;
}

他のアイデアはありますか?

4

1 に答える 1

1

私は実際にはラッパーメソッドを使用します。メソッドに ReSharper の属性を付けると、ReSharper の警告を保持できますJetBrains.Annotations.StringFormatMethodAttribute

更新params署名のキーワードがありませんでした。コメント/ヒントをくれた @EricMSFT に感謝します。

[StringFormatMethod("value")]
private string CurrentCulture(string value, params object[] objects) {
    return string.Format(CultureInfo.CurrentCulture, value, objects);
}

StringFormatMethodAttribute最も簡単な方法 (独自のコードベースで を定義する方法は他にもあります) は、おそらく"C:\Program Files (x86)\JetBrains\ReSharper\v6.1\Bin\JetBrains.Annotations.dll"プロジェクトで参照することです。

詳細はこちら

于 2012-10-01T12:22:00.803 に答える