Je suis tenter de faire certains de conversion de données. Malheureusement, une grande partie des données est dans les cordes, où il doit être de type int ou double, etc...
Donc, ce que j'ai est quelque chose comme:
double? amount = Convert.ToDouble(strAmount);
Le problème avec cette approche est que si strAmount est vide, si il est vide je le veux à somme nulle, donc quand je l'ajouter dans la base de données de la colonne sera null. Donc 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'un. Cela rend les choses un peu plus difficile à lire, surtout quand j'ai une grande quantité de colonnes à convertir.
Je pensais utiliser une extension de la classe string et générique de passer dans le type, c'est parce qu'il pourrait être un double, ou un int ou un long. J'ai donc 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 je reçois l'erreur: Impossible de convertir le type 'string' à 'T?'
Est-il un moyen de contourner cela? Je ne suis pas très familier avec la création de méthodes utilisant des génériques.