Ich versuche eine Datenkonvertierung durchzuführen. Leider befinden sich viele Daten in Zeichenfolgen, in denen es sich um int oder double usw. handeln sollte.
Was ich also habe, ist so etwas wie:
double? amount = Convert.ToDouble(strAmount);
Das Problem bei diesem Ansatz ist, wenn strAmount leer ist. Wenn es leer ist, soll der Wert null sein. Wenn ich ihn also zur Datenbank hinzufüge, ist die Spalte null. Also schrieb ich Folgendes:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Jetzt funktioniert das gut, aber ich habe jetzt fünf Codezeilen anstelle von einer. Dies macht das Lesen etwas schwieriger, insbesondere wenn ich eine große Anzahl von Spalten konvertieren muss.
Ich dachte, ich würde eine Erweiterung der String-Klasse und der Generika verwenden, um den Typ zu übergeben. Dies liegt daran, dass es sich um ein Double, ein Int oder ein Long handeln kann. Also habe ich das versucht:
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;
}
}
Aber ich bekomme die Fehlermeldung: Kann Typ 'string' nicht in 'T konvertieren?'
Gibt es einen Weg, dies zu umgehen? Ich bin nicht sehr vertraut mit dem Erstellen von Methoden mit Generika.