Partilhar via


CA1306: definir localidade para tipos de dados

TypeName

SetLocaleForDataTypes

CheckId

CA1306

Categoria

Microsoft.Globalization

Alteração Significativa

Sem quebra

Causa

Um método ou um construtor criou uma ou mais instâncias de DataTable ou de DataSet e não têm definido explicitamente a propriedade de localidade (DataTable.Locale ou DataSet.Locale).

Descrição da Regra

A localidade determina os elementos com específicos de apresentação de dados, como a formatação usado para valores numéricos, símbolos de moeda, e ordem de classificação.Quando você cria DataTable ou DataSet, você deve definir a localidade explicitamente.Por padrão, a localidade para esses tipos é a cultura atual.Para os dados que são armazenados em um base de dados ou em um arquivo e compartilhados global, a localidade normalmente deve ser definida como a cultura invariável (CultureInfo.InvariantCulture).Quando os dados são compartilhados por meio de culturas, usa a localidade padrão pode fazer com que o conteúdo de DataTable ou de DataSet a ser dispostos incorretamente ou interpretado.

Como Corrigir Violações

Para corrigir uma violação desta regra, defina explicitamente a localidade para DataTable ou DataSet.

Quando Suprimir Alertas

É seguro suprimir um aviso desta regra quando a biblioteca ou o aplicativo são para um público local limitada, os dados não é compartilhado, ou os gera a configuração padrão do comportamento desejado em todos os cenários com suporte.

Exemplo

O exemplo a seguir cria duas instâncias de 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;
        }
    }
}

Consulte também

Referência

DataTable

DataSet

CultureInfo

CultureInfo.CurrentUICulture

CultureInfo.InvariantCulture