如何覆盖C#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 Serialials将无法序列化我的模型。如果有效,也许我可以使用dateformat进行设置。

所讨论的方法未标记为 virtual。它不能被覆盖。

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

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