Sé que podría anular el método ToString() de un objeto, de modo que cada vez que llame a un objeto o lo pase a una función que requiera un tipo String, se convertirá en String.Conversión de tipo automático en C#
He escrito varios métodos de extensión para el tipo de objeto 'objeto'
public static DateTime ToDate(this object date)
{
return DateTime.Parse(date.ToString());
}
public static int ToInteger(this object num)
{
return Int32.Parse(num.ToString());
}
public static long ToLong(this object num)
{
return Int64.Parse(num.ToString());
}
de manera que solo podía llamar a ellos de esta manera:
eventObject.Cost = row["cost"].ToString();
eventObject.EventId = row["event_id"].ToLong();
Sin embargo, lo que quiero lograr es convertir los objetos de fila que son de tipo 'objeto' a su tipo correcto en función de los tipos de propiedad en mi 'eventObject'. Entonces, podría llamarlo así:
eventObject.Cost = row["cost"];
eventObject.EventId = row["event_id"];
La fila es un DataRow si eso es importante.
¿Por qué no solo utiliza la clase Convert? http://msdn.microsoft.com/en-us/library/system.convert.aspx - Y no, no puede obtener la conversión de tipo silencioso como su último código allí, a menos que haga que "row [x]" devuelva un objeto personalizado que sabe cómo hacer la conversión implícita. –
+1 @Lasse El uso de la clase Convert es preferible al 'Objeto' de spackling con métodos de utilidad. –
utilizará ahora, pensó que no tenía ninguna diferencia –