CA1306: указывайте языковой стандарт для типов данных
Товар | Значение |
---|---|
Идентификатор правила | CA1306 |
Категория | Microsoft.Globalization |
Критическое изменение | Не критическое |
Причина
Метод или конструктор создали один или несколько System.Data.DataTableSystem.Data.DataSet экземпляров и не явно задали свойство языкового стандарта (System.Data.DataTable.Locale или System.Data.DataSet.Locale).
Описание правила
Языковой стандарт определяет элементы представления, относящиеся к языку и региональным параметрам, например форматирование, используемое для числовых значений, символов валют и порядка сортировки. При создании DataTable или DataSetнастройке языкового стандарта следует явно задать языковой стандарт. По умолчанию языковой стандарт для этих типов — это текущий язык и региональные параметры. Для данных, хранящихся в базе данных или файле, и общий доступ к ним предоставляется глобально, языковой стандарт должен обычно иметь инвариантный язык и региональные параметры (System.Globalization.CultureInfo.InvariantCulture). Если данные используются для разных региональных параметров, использование языкового стандарта по умолчанию может привести к неправильному представлению или интерпретации содержимого DataTableDataSet .
Устранение нарушений
Чтобы устранить нарушение этого правила, явно задайте языковой стандарт для DataTable или DataSet.
Когда лучше отключить предупреждения
Это безопасно для подавления предупреждения из этого правила, если библиотека или приложение предназначено для ограниченной локальной аудитории, данные не являются общими, или параметр по умолчанию дает требуемое поведение во всех поддерживаемых сценариях.
Пример
В следующем примере создаются два 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;
}
}
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по