как использовать TypeConverters для преобразования System.Datetime в пользовательский тип

StackOverflow https://stackoverflow.com/questions/429897

Вопрос

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

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

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

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

Есть идеи?

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top