comment utiliser TypeConverters pour convertir un System.Datetime en type personnalisé
-
07-07-2019 - |
Question
Pour une raison quelconque, je dois convertir / convertir un DateTime
en un des nombreux objets personnalisés
Cela s’avère très difficile à faire de façon générique.
Je songe à implémenter une méthode d'extension sur un objet ou peut-être à étendre DateTimeConverter
.
Mais alors quelle serait la manière générique de gérer cela, j’ai un objet et un type de destination et pour le moment j’utilise System.ConvertTo (..)
mais ceci est clairement limité car il ne prend en charge que la conversion en types .NET et ne peut pas être étendu.
Des idées?
La solution
Vous pouvez ajouter un constructeur pour votre TimeStamp qui prend DateTime en tant que paramètre.
public class TimeStamp
{
public TimeStamp(DateTime dateTime, ...)
{
// Your code here to convert from dateTime to TimeStamp
}
}
Puis plus tard ...
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;
}
Vous pourriez probablement même étendre cela à toutes sortes de réflexions et de constructeurs, etc. Mais si vous voulez baser un objet sur un autre (comme un horodatage sur une date), un constructeur semble naturel.
J'espère que cela vous aidera, TJB