como usar TypeConverters para converter um System.DateTime para tipo personalizado
-
07-07-2019 - |
Pergunta
Por alguma razão eu preciso fundido / converter um DateTime
em um dos muitos objetos personalizados
Isso prova a ser muito difícil de fazer de maneira genérica agradável.
Estou pensando em implementar um método de extensão no objeto ou talvez estendendo DateTimeConverter
.
Mas então qual seria a maneira genérica para lidar com isso, eu tenho um objeto e um tipo de destino e no momento eu estou usando System.ConvertTo(..)
mas isso é claramente limitado, porque ele só suporta a conversão para tipos .NET e não pode ser prorrogado.
Todas as idéias?
Solução
Você pode adicionar um construtor para o seu TimeStamp que leva DateTime como parâmetro.
public class TimeStamp
{
public TimeStamp(DateTime dateTime, ...)
{
// Your code here to convert from dateTime to TimeStamp
}
}
Então, mais 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;
}
Você provavelmente poderia até mesmo estender isso com todos os tipos de reflexão e construtores etc. Mas se você quiser base de um objeto fora de outro (como um carimbo de tempo a partir de uma data e hora) um construtor parece natural.
Espero que isso ajude, TJB