Domanda

Per qualche motivo ho bisogno di trasmettere / convertire un DateTime in uno dei tanti oggetti personalizzati

Questo si rivela molto difficile da fare in un bel modo generico.

Sto pensando di implementare un metodo di estensione su oggetto o forse di estendere DateTimeConverter .

Ma quale sarebbe il modo generico di gestirlo, ho un oggetto e un tipo di destinazione e al momento sto usando System.ConvertTo (..) ma questo è chiaramente limitato perché supporta solo la conversione in tipi .NET e non può essere esteso.

Qualche idea?

È stato utile?

Soluzione

È possibile aggiungere un costruttore per TimeStamp che utilizza DateTime come parametro.

public class TimeStamp
{
   public TimeStamp(DateTime dateTime, ...)
   {
    // Your code here to convert from dateTime to TimeStamp
   }
}

Quindi più tardi ...

 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;
 }

Probabilmente potresti anche estenderlo con tutti i tipi di riflessione, costruttori ecc. Ma se vuoi basare un oggetto su un altro (come un timestamp da una data) un costruttore sembra naturale.

Spero che questo aiuti, TJB

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top