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;
        }
    }
}

Consulte também

Referência

System.Data.DataTable

System.Data.DataSet

System.Globalization.CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture