Estou tentando fazer alguma conversão de dados. Infelizmente, muitos dos dados estão em strings, onde devem ser int's ou duplos, etc ...
Então, o que eu tenho é algo como:
double? amount = Convert.ToDouble(strAmount);
O problema com essa abordagem é que se strAmount estiver vazio, se estiver vazio, quero que o valor seja nulo; portanto, quando o adiciono ao banco de dados, a coluna será nula. Então acabei escrevendo isso:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Agora isso funciona bem, mas agora tenho cinco linhas de código em vez de uma. Isso torna as coisas um pouco mais difíceis de ler, especialmente quando tenho uma grande quantidade de colunas para converter.
Eu pensei que usaria uma extensão para a classe string e os genéricos para passar o tipo, isso ocorre porque poderia ser um duplo, um int ou um longo. Então eu tentei isso:
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;
}
}
Mas recebo o erro: Não é possível converter o tipo 'string' para 'T?'
Existe uma maneira de contornar isso? Não estou muito familiarizado com a criação de métodos usando genéricos.