CA1306 : Définir les paramètres régionaux pour les types de données

Élément Valeur
ID de la règle CA1306
Category Microsoft.Globalization
Modification avec rupture Sans rupture

Cause

Une méthode ou un constructeur a créé une ou plusieurs instances de System.Data.DataTable ou System.Data.DataSet et n’a pas défini explicitement la propriété locale (System.Data.DataTable.Locale ou System.Data.DataSet.Locale).

Description de la règle

Les paramètres régionaux déterminent des éléments de présentation des données spécifiques à la culture tels que la mise en forme utilisée pour les valeurs numériques, les symboles monétaires et l’ordre de tri. Quand vous créez un DataTable ou un DataSet, vous devez définir explicitement les paramètres régionaux. Par défaut, les paramètres régionaux pour ces types correspondent à la culture actuelle. Pour les données stockées dans une base de données ou un fichier et qui sont partagées à l’échelle mondiale, les paramètres régionaux doivent normalement être définis sur la culture invariante (System.Globalization.CultureInfo.InvariantCulture). Quand des données sont partagées entre différentes cultures, l’utilisation des paramètres régionaux par défaut peut entraîner une présentation ou une interprétation incorrecte du contenu du DataTable ou DataSet.

Comment corriger les violations

Pour corriger une violation de cette règle, définissez explicitement les paramètres régionaux pour le DataTable ou DataSet.

Quand supprimer les avertissements

Vous pouvez supprimer un avertissement de cette règle de manière sûre quand la bibliothèque ou l’application s’adresse à un public local limité, que les données ne sont pas partagées ou que le paramètre par défaut produit le comportement souhaité dans tous les scénarios pris en charge.

Exemple

L’exemple suivant crée deux instances 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;
        }
    }
}

Voir aussi