Estoy intentando hacer alguna conversión de datos. Desafortunadamente, gran parte de los datos están en cadenas, donde deberían ser int o dobles, etc.
Entonces, lo que tengo es algo como:
double? amount = Convert.ToDouble(strAmount);
El problema con este enfoque es que si strAmount está vacío, si está vacío, quiero que sea nulo, por lo que cuando lo agregue a la base de datos, la columna será nula. Así que terminé escribiendo esto:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Ahora esto funciona bien, pero ahora tengo cinco líneas de código en lugar de una. Esto hace que las cosas sean un poco más difíciles de leer, especialmente cuando tengo una gran cantidad de columnas para convertir.
Pensé que usaría una extensión de la clase de cadena y genéricos para pasar el tipo, esto se debe a que podría ser doble, int o largo. Entonces intenté esto:
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;
}
}
Pero recibo el error: ¿No se puede convertir el tipo 'string' a 'T?'
¿Hay alguna forma de evitar esto? No estoy muy familiarizado con la creación de métodos con genéricos.