CA1306: Specificare le impostazioni locali per i tipi di dati
TypeName |
SetLocaleForDataTypes |
CheckId |
CA1306 |
Category |
Microsoft.Globalization |
Breaking Change |
Non sostanziale |
Causa
Un metodo o un costruttore ha creato una o più istanze System.Data.DataTable o System.Data.DataSet e non ha impostato in modo esplicito la proprietà Locale (DataTable.Locale o DataSet.Locale).
Descrizione della regola
Le impostazioni locali determinano elementi di presentazione specifici delle impostazioni cultura per i dati, ad esempio la formattazione utilizzata per valori numerici, simboli di valuta e il criterio di ordinamento. Quando si crea un oggetto DataTable o DataSet, è opportuno definire in modo esplicito le impostazioni locali. Per impostazione predefinita, le impostazioni locali per questi tipi sono rappresentate dalle impostazioni cultura attuali. Per i dati archiviati in un database o in un file e condivisi globalmente, le impostazioni locali devono essere, in condizioni normali, impostate sulle impostazioni cultura invarianti (CultureInfo.InvariantCulture). Quando i dati sono condivisi tra più impostazioni cultura, l'utilizzo delle impostazioni locali predefinite può causare la presentazione o l'interpretazione errata dell'oggetto DataTable o DataSet.
Come correggere le violazioni
Per correggere una violazione di questa regola, definire in modo esplicito le impostazioni locali per l'oggetto DataTable o DataSet.
Esclusione di avvisi
L'esclusione di un avviso da questa regola è sicura se la libreria o l'applicazione è destinata a un ridotto pubblico locale, i dati non sono condivisi o l'impostazione predefinita produce il comportamento desiderato in tutti gli scenari supportati.
Esempio
Nell'esempio riportato di seguito vengono create due istanze di 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;
}
}
}