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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top