【问题标题】:How to override the SerializeDateTime method of c# javascriptserializer class?如何覆盖 c# javascriptserializer 类的 SerializeDateTime 方法?
【发布时间】:2019-07-04 12:41:06
【问题描述】:

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 进行设置。

【问题讨论】:

    标签: c# .net javascriptserializer


    【解决方案1】:

    有问题的方法未标记为virtual。它不能被覆盖。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多