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