[Tip] Extendiendo TypeConverter para tratar con nulos
Introducción
En este mini post voy a definir un método extensor al tipo TypeConverter para el tratamiento de valores nulos provenientes de la BD.
Al Lio
Como todos sabeis ( y sino muy mal...) un nulo proveniente de la Base de Datos va a ser DbNull.Value (no es el mismo null que en c#), bien para evitar problemas con el uso de TypeConverter, vamos a definir la siguiente extensión:
public static class TypeConverterExtensions
{
public static object ConvertToWithNullableValues(this TypeConverter converter, object value, Type propertyTipe)
{
if ((value == null || value == DBNull.Value))
return null;
if (value.GetType().Equals(propertyType)) return value;
return converter.ConvertTo(value, propertyTipe);
}
}
Un ejemplo de su utilización sería:
reg.GetType().GetProperty(prop.Name).SetValue(reg, converter.ConvertToWithNullableValues(reader[prop.Name], prop.PropertyType), null);
En el ejemplo estoy usando Reflection porque accedo dinamicamente a las propiedades...
Bueno espero que os sea de utilidad.
Saludos!
PD: He añadido una condición más para que si los tipos del objeto y el tipo a convertir coincidan no intente hacer una conversión.