Est-ce un moyen sûr et efficace de gérer la lecture des valeurs NULL dans une base de données à l'aide de Generics?
Question
Je jouais avec des génériques et espérais pouvoir obtenir des commentaires ou des suggestions sur une fonction que j'ai créée pour faciliter la lecture des valeurs nulles à partir de la base de données. Ma principale préoccupation concerne la déclaration if. Existe-t-il un meilleur moyen de savoir si T est un ect de chaîne? Merci.
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;
}
La solution
Quel que soit le type de T
, vous pouvez revenir à default (T)
qui fournira la valeur par défaut pour le type donné ( , string.Empty
0
, false
, null
, etc ...):
value = default(T);
Edition: default (chaîne)
renvoie cependant null
.
Autres conseils
Vous devez également couvrir d'autres types de données primitifs.
value = default(T);
Cette valeur est NULL s'il s'agit d'un type de référence, sinon 0, false ou autre chose est une valeur par défaut appropriée du type donné T.
Remarque: par défaut (chaîne) est null
, pas chaîne.Empty. Si vous voulez que ce soit String.Empty
, vous devez l'implémenter en tant qu'exception.