如何重写c#javascriptserializer类的SerializeDateTime方法?

时间:2019-07-04 12:41:06

标签: c# .net javascriptserializer

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 :(得分:0)

相关方法未标记为virtual。它不能被覆盖。

为什么不只在静态类中创建自己的方法?

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