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