CA1306: Ustaw ustawienia regionalne dla typów danych
TypeName |
SetLocaleForDataTypes |
CheckId |
CA1306 |
Kategoria |
Microsoft.Globalization |
Zmiana kluczowa |
Niekluczowa |
Przyczyna
Metoda lub konstruktor tworzy jedno lub więcej wystąpień System.Data.DataTable lub System.Data.DataSet i nie ustawia jawnie właściwości ustawień regionalnych (DataTable.Locale lub DataSet.Locale).
Opis reguły
Ustawienia regionalne określają specyficzne dla kultur elementy prezentacji dla danych, takie jak formatowanie, które jest używane dla wartości liczbowych, symbole walut i porządek sortowania.Podczas tworzenia DataTable lub DataSet, należy jawnie ustawić ustawienia regionalne.Domyślnie, ustawieniem regionalnym dla tych typów jest bieżąca kultura.Dla danych przechowywanych w bazie danych lub pliku i globalnie udostępnionych, ustawienia regionalne zwykle należy ustawić na kulturą niezmienną (CultureInfo.InvariantCulture).Gdy dane są udostępniane dla różnych kultur, użycie domyślnych ustawień regionalnych może spowodować, że zawartość DataTable lub DataSet będzie przedstawiana lub interpretowana niepoprawnie.
Jak naprawić naruszenia
Aby naprawić naruszenie tej zasady, jawnie ustaw ustawienia regionalne dla DataTable lub DataSet.
Kiedy pominąć ostrzeżenia
Można bezpiecznie wyłączyć ostrzeżenia od tej reguły, gdy biblioteka lub aplikacja jest ograniczona do odbiorców lokalnych, dane nie są udostępniane lub domyślne ustawienie daje pożądane zachowanie we wszystkich obsługiwanych scenariuszach.
Przykład
Poniższy przykład tworzy dwa wystąpienia 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;
}
}
}