Я пытаюсь преобразовать данные. К сожалению, большая часть данных находится в строках, где они должны быть int или double и т. Д.
Итак, у меня есть что-то вроде:
double? amount = Convert.ToDouble(strAmount);
Проблема с этим подходом заключается в том, что если strAmount пуст, если он пуст, я хочу, чтобы сумма была равна нулю, поэтому, когда я добавляю его в базу данных, столбец будет нулевым. В итоге я написал следующее:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Теперь это работает нормально, но теперь у меня пять строк кода вместо одной. Это затрудняет чтение, особенно когда мне нужно преобразовать большое количество столбцов.
Я думал, что использую расширение для строкового и универсального классов для передачи типа, потому что это может быть double, int или long. Итак, я попробовал это:
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;
}
}
Но я получаю сообщение об ошибке: не удается преобразовать строку типа в T?
Есть ли способ обойти это? Я не очень знаком с созданием методов с использованием дженериков.