Próbuję dokonać konwersji danych. Niestety, większość danych jest w łańcuchach, gdzie powinny być int lub double, itd ...
Więc mam coś takiego:
double? amount = Convert.ToDouble(strAmount);
Problem z tym podejściem polega na tym, że jeśli strAmount jest puste, jeśli jest puste, chcę, aby kwota była zerowa, więc kiedy dodam go do bazy danych, kolumna będzie pusta. Więc napisałem to:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Teraz to działa dobrze, ale mam teraz pięć wierszy kodu zamiast jednego. To sprawia, że czytanie jest trochę trudniejsze, zwłaszcza gdy mam do konwersji dużą liczbę kolumn.
Pomyślałem, że użyję rozszerzenia klasy string i klasy generycznej, aby przekazać typ, ponieważ może to być double, int lub long. Więc spróbowałem tego:
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;
}
}
Ale pojawia się błąd: nie można przekonwertować typu „string” na „T”?
Czy jest na to sposób? Nie jestem zaznajomiony z tworzeniem metod przy użyciu typów ogólnych.