Как переопределить метод SerializeDateTime класса c # javascriptserializer? - PullRequest
0 голосов
/ 04 июля 2019

SerializeDateTime метод возвращает дату и время в миллисекундах. Я хочу, чтобы он перешел на микросекунды. SerializeDateTime метод следующим образом:

private static void SerializeDateTime(DateTime datetime, StringBuilder sb, JavaScriptSerializer.SerializationFormat serializationFormat)
{
  if (serializationFormat == JavaScriptSerializer.SerializationFormat.JSON)
  {
    sb.Append("\"\\/Date(");
    sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks) / 10000L);
    sb.Append(")\\/\"");
  }
  else
  {
    sb.Append("new Date(");
    sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks) / 10000L);
    sb.Append(")");
  }
}

Я хочу переопределить этот метод следующим образом.

private static void SerializeDateTime(DateTime datetime, StringBuilder sb, JavaScriptSerializer.SerializationFormat serializationFormat)
{
  if (serializationFormat == JavaScriptSerializer.SerializationFormat.JSON)
  {
    sb.Append("\"\\/Date(");
    sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks));
    sb.Append(")\\/\"");
  }
  else
  {
    sb.Append("new Date(");
    sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks));
    sb.Append(")");
  }
}

Я не знаю, как это сделать. Как еще мы можем найти решение? Сериализатор Newtonsoft не может сериализовать мою модель, когда я хочу попробовать. Если бы это сработало, возможно, я мог бы настроить его с помощью dateformat.

1 Ответ

0 голосов
/ 04 июля 2019

Данный метод не помечен как virtual.Его нельзя переопределить.

Почему бы просто не создать свой собственный метод в статическом классе?

public static CustomSerializer
{
    public static void SerializeDateTime(...) {
         //your implementation
    }
}
...