CA1306: Definir a localidade para tipos de dados
TypeName |
SetLocaleForDataTypes |
CheckId |
CA1306 |
<strong>Categoria</strong> |
Microsoft.Globalization |
Alteração significativa |
Não-separável |
Causa
Um método ou construtor criado um ou mais System.Data.DataTable ou System.Data.DataSet instâncias e não definir explicitamente a propriedade locale (DataTable.Locale ou DataSet.Locale).
Descrição da regra
A localidade determina os elementos da apresentação de culture-specific para dados, como a formatação usada para valores numéricos, símbolos de moeda e ordem de classificação. Quando você cria um DataTable ou DataSet, você deve definir explicitamente a localidade. Por padrão, a localidade para esses tipos é a cultura atual. Para dados que são armazenados em um arquivo ou banco de dados e são compartilhados globalmente, a localidade normalmente deve ser definida para a cultura invariável (CultureInfo.InvariantCulture). Quando os dados são compartilhados entre culturas, usando a localidade padrão pode fazer com que o conteúdo do DataTable ou DataSet a ser apresentados ou interpretado incorretamente.
Como corrigir violações
Para corrigir uma violação desta regra, defina explicitamente a localidade para o DataTable ou DataSet.
Quando suprimir avisos
É seguro eliminar um aviso esta regra quando a biblioteca ou o aplicativo é para um público limitado de local, os dados não são compartilhados ou a configuração padrão produz o comportamento desejado em todos os cenários com suporte.
Exemplo
O exemplo a seguir cria dois DataTable instâncias.
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;
}
}
}