如何使用TypeConverters将System.Datetime转换为自定义类型

时间:2009-01-09 21:55:58

标签: datetime typeconverter complex-data-types

出于某种原因,我需要将DateTime转换/转换为许多自定义对象之一

事实证明这很难以通用的方式进行。

我正在考虑在对象上实现扩展方法,或者可能扩展DateTimeConverter

但是那么处理这个的通用方法是什么,我有一个对象和一个目标类型,目前我正在使用System.ConvertTo(..),但这显然是有限的,因为它只支持转换为.NET类型和不能延长。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以为TimeStamp添加一个构造函数,该构造函数将DateTime作为参数。

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

然后......

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

你甚至可以用各种反射和构造函数等来扩展它。 但是如果你想将一个对象基于另一个对象(比如日期时间的时间戳),那么构造函数看起来很自然。

希望这有帮助,TJB