È un modo sicuro ed efficace per gestire la lettura di valori null in un DB usando Generics?
Domanda
Ho giocato con i generici e speravo di ricevere feedback o suggerimenti su una funzione che ho creato per aiutare a gestire la lettura di valori null dal DB. La mia preoccupazione principale è nell'istruzione if. C'è un modo migliore per scoprire se T è un ect stringa. Grazie.
public static T CheckNull<T>(object value)
{
if ((value != null) && value.Equals(DBNull.Value))
{
if (object.ReferenceEquals(typeof(T), typeof(String)))
value = string.Empty;
else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
value = false;
else
value = null;
}
return (T)value;
}
Soluzione
Indipendentemente dal tipo di T
, puoi tornare a default (T)
che fornirà il valore predefinito per il tipo specificato ( , string.Empty
0
, false
, null
, ecc ...):
value = default(T);
Modifica: default (stringa)
, tuttavia, restituisce null
.
Altri suggerimenti
Devi anche includere altri tipi di dati primitivi.
value = default(T);
Questo restituisce null se si tratta di un tipo di riferimento, altrimenti 0, falso o qualunque sia un valore predefinito appropriato del tipo dato T.
Nota: l'impostazione predefinita (stringa) è null
, non string.Empty. Se vuoi che sia String.Empty
, devi implementarlo come un'eccezione.