как использовать TypeConverters для преобразования System.Datetime в пользовательский тип - PullRequest
0 голосов
/ 10 января 2009

По какой-то причине мне нужно преобразовать DateTime в один из множества пользовательских объектов

Оказывается, что это очень сложно сделать в общем виде.

Я думаю о реализации метода расширения объекта или, возможно, расширения DateTimeConverter.

Но тогда каков будет общий способ справиться с этим, у меня есть объект и тип назначения, и на данный момент я использую System.ConvertTo(..), но это явно ограничено, потому что он поддерживает только преобразование в типы .NET и не может быть продлены.

Есть идеи?

1 Ответ

0 голосов
/ 10 января 2009

Вы можете добавить конструктор для вашей 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

...