J'essaye d'effectuer une conversion de données. Malheureusement, la plupart des données sont dans des chaînes, où elles devraient être des int ou double, etc ...
Donc, ce que j'ai, c'est quelque chose comme:
double? amount = Convert.ToDouble(strAmount);
Le problème avec cette approche est que si strAmount est vide, s'il est vide, je veux qu'il soit nul, donc lorsque je l'ajoute dans la base de données, la colonne sera nulle. Alors j'ai fini par écrire ceci:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Maintenant, cela fonctionne bien, mais j'ai maintenant cinq lignes de code au lieu d'une. Cela rend les choses un peu plus difficiles à lire, surtout lorsque j'ai un grand nombre de colonnes à convertir.
Je pensais que j'utiliserais une extension de la classe de chaîne et des génériques pour passer le type, c'est parce que cela pourrait être un double, ou un int, ou un long. Alors j'ai essayé ceci:
public static class GenericExtension
{
public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct
{
if (s.Trim().Length > 0)
{
return (Nullable<T>)s;
}
return null;
}
}
Mais j'obtiens l'erreur: impossible de convertir le type «chaîne» en «T?»
Y a-t-il un moyen de contourner ceci? Je ne suis pas très familier avec la création de méthodes utilisant des génériques.