[C#] メソッドにmessageなどの名前の引数が含まれるとコード分析エラー(CA1303)出るときの対策方法

引数名に message, text, caption などの文字列を指定した場合は引数にリソースから取得した文字列を与えないと「CA1303 ローカライズされるパラメーターとしてリテラルを渡さない」というコード分析エラーが発生する。

コード内でローカライズしててもエラーが出る場合がある。そんな場合の対策としては…

1. リソースから文字列を取得するように変更する

正攻法 : 正攻法なのでググればすぐ出てくる。ResXファイルから自動生成されたリソースクラスから取得した文字列を引数に渡すだけ。

2. LocalizableAttribute(false) 属性を付ける

[Localizable(false)]
public void Test(string message)
{
  // do something...
}

もちろんローカライズすべき引数である場合にこの方法は駄目です

3. SuppressMessage 属性で抑制

[SuppressMessage("Microsoft.Globalization", "CA1303")]
public void Test(string text)
{
  // do something...
}

4. 苦肉の策として引数名を変更する

良い方法ではないけど

public void Test(string messageText, string msg)
{
  // do something...
}
Share
関連記事