Я пытаюсь сделать некоторые преобразования данных. К сожалению, большая часть данных находится в строках, где они должны быть int или double, и т. Д...
Так что у меня есть что-то вроде:
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;
}
}
Но я получаю ошибку: не могу преобразовать тип 'строка' в 'T?'
Это можно обойти? Я не очень знаком с созданием методов с использованием обобщений.