CA1306 : Définir les paramètres régionaux pour les types de données
TypeName |
SetLocaleForDataTypes |
CheckId |
CA1306 |
Catégorie |
Microsoft.Globalization |
Modification avec rupture |
Modification sans rupture |
Cause
Une méthode ou constructeur a créé une ou plusieurs instances de DataTable ou DataSet et n'a pas défini explicitement la propriété de paramètres régionaux (DataTable.Locale ou 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, telles que la mise en forme utilisée pour les valeurs numériques, les symboles monétaires et l'ordre de tri.Lorsque vous créez un DataTable ou un DataSet, vous devez définir les paramètres régionaux explicitement.Par défaut, les paramètres régionaux de ces types sont la culture actuelle.Pour les données stockées dans une base de données ou un fichier et partagées globalement, les paramètres régionaux devraient normalement avoir pour valeur la culture indifférente (CultureInfo.InvariantCulture).Lorsque les données sont partagées à l'échelle des différentes cultures, le recours à des paramètres régionaux par défaut peut entraîner une présentation ou une interprétation incorrecte des contenus du DataTable ou du DataSet.
Comment corriger les violations
Pour corriger une violation de cette règle, définissez explicitement les paramètres régionaux (via la propriété locale) pour le DataTable ou le DataSet.
Quand supprimer les avertissements
Il est possible de supprimer sans risque un avertissement de cette règle lorsque la bibliothèque ou l'application est destinée à une audience locale limitée, lorsque les données ne sont pas partagées, ou lorsque le paramétrage par défaut débouche sur le comportement désiré 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;
}
}
}