CA1306: データ型のロケールを設定します
TypeName |
SetLocaleForDataTypes |
CheckId |
CA1306 |
分類 |
Microsoft.Globalization |
互換性に影響する変更点 |
なし |
原因
メソッドまたはコンストラクターで、1 つ以上の System.Data.DataTable インスタンスまたは System.Data.DataSet インスタンスが作成され、ロケール プロパティ (DataTable.Locale または DataSet.Locale) が明示的に設定されませんでした。
規則の説明
ロケールによって、データに関するカルチャ固有の表示要素が決まります。たとえば、数値、通貨記号、並べ替え順序に使用する形式などです。 DataTable または DataSet を作成するときは、ロケールを明示的に設定する必要があります。 既定で、この型のロケールは現在のカルチャです。 データベースまたはファイルに格納され、グローバルに共有されているデータの場合、通常、ロケールはインバリアント カルチャ (CultureInfo.InvariantCulture) に設定します。 データを複数のカルチャで共有する場合、既定のロケールを使用すると、DataTable または DataSet のコンテンツが誤って表示されたり解釈されたりすることがあります。
違反の修正方法
この規則違反を修正するには、DataTable または DataSet のロケールを明示的に設定します。
警告を抑制する状況
ライブラリまたはアプリケーションが限定されたローカル ユーザーを対象にしている場合、データを共有していない場合、または既定の設定でどのような状況でも適切に動作する場合、この規則による警告を抑制しても安全です。
使用例
次の例では、2 つの DataTable インスタンスを作成します。
using System;
using System.Data;
using System.Globalization;
namespace GlobalLibrary
{
public class MakeDataTables
{
// Violates rule: SetLocaleForDataTypes.
public DataTable MakeBadTable()
{
DataTable badTable = new DataTable("Customers");
DataColumn keyColumn = badTable.Columns.Add("ID", typeof(Int32));
keyColumn.AllowDBNull = false;
keyColumn.Unique = true;
badTable.Columns.Add("LastName", typeof(String));
badTable.Columns.Add("FirstName", typeof(String));
return badTable;
}
public DataTable MakeGoodTable()
{
DataTable goodTable = new DataTable("Customers");
// Satisfies rule: SetLocaleForDataTypes.
goodTable.Locale = CultureInfo.InvariantCulture;
DataColumn keyColumn = goodTable.Columns.Add("ID", typeof(Int32));
keyColumn.AllowDBNull = false;
keyColumn.Unique = true;
goodTable.Columns.Add("LastName", typeof(String));
goodTable.Columns.Add("FirstName", typeof(String));
return goodTable;
}
}
}