cómo usar TypeConverters para convertir un System.Datetime a tipo personalizado
-
07-07-2019 - |
Pregunta
Por alguna razón, necesito convertir / convertir un DateTime
en uno de los muchos objetos personalizados
Esto demuestra ser muy difícil de hacer de una manera genérica y agradable.
Estoy pensando en implementar un método de extensión en el objeto o tal vez extender DateTimeConverter
.
Pero entonces, ¿cuál sería la forma genérica de manejar esto? Tengo un objeto y un tipo de destino y en este momento estoy usando System.ConvertTo (..)
pero esto está claramente limitado porque solo admite la conversión a tipos .NET y no se puede extender.
¿Alguna idea?
Solución
Puede agregar un constructor para su TimeStamp que tome DateTime como parámetro.
public class TimeStamp
{
public TimeStamp(DateTime dateTime, ...)
{
// Your code here to convert from dateTime to TimeStamp
}
}
Luego más tarde ...
DestType Convert<DestType>( Object linqResult )
{
DestType result;
if( linqResult is DateTime && DestType is TimeStamp )
{
DateTime dbTime = linqResult as DateTime;
result = new TimeStamp( dbTime );
}
...
return result;
}
Probablemente incluso podría extender esto con todo tipo de reflexión y constructores, etc. Pero si desea basar un objeto en otro (como una marca de tiempo de una fecha y hora), un constructor parece natural.
Espero que esto ayude, TJB