CA1306: Nastavte národního prostředí pro datové typy
TypeName |
SetLocaleForDataTypes |
CheckId |
CA1306 |
Kategorie |
Microsoft.Globalization |
Narušující změna |
Nenarušující |
Příčina
Metoda nebo konstruktor vytvořili jednu nebo více instancí DataTable nebo DataSet a explicitně nenastavili vlastnost národního prostředí (DataTable.Locale nebo DataSet.Locale).
Popis pravidla
Národní prostředí určuje prvky prezentace specifické kultury pro data, například formátování použité pro číselné hodnoty, symbolů měny a pořadí řazení.Při vytváření DataTable nebo DataSet, by mělo být explicitně nastaveno národní prostředí.Ve výchozím nastavení je u těchto typů nastaveno národní prostředí na aktuální jazykovou verzi.Pro data, která jsou uložena v databázi nebo v souboru a jsou globálně sdílena, je zapotřebí obvykle nastavit národní prostředí na neutrální kulturu (CultureInfo.InvariantCulture).Při sdílení dat mezi kulturami může obsah může použití výchozího národního prostředí způsobit nesprávné zobrazení obsahu nebo nesprávnou interpretaci DataTable nebo DataSet.
Jak vyřešit porušení
Pro napravení porušení tohoto pravidla je zapotřebí nastavit národní prostředí pro DataTable nebo DataSet.
Kdy potlačit upozornění
Je bezpečné potlačit varování pro toto pravidlo v případě, pokud je knihovna nebo aplikace určena pro místní omezenou skupinu, pokud nejsou sdílena data nebo výchozí nastavení představuje požadované chování ve všech podporovaných scénářích.
Příklad
Následující příklad vytvoří dvě instance 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;
}
}
}