gpt4 book ai didi

c# - 强制 XmlSerializer 将 DateTime 序列化为 'YYYY-MM-DD hh:mm:ss'

转载 作者:IT王子 更新时间:2023-10-29 03:43:55 24 4
gpt4 key购买 nike

我有一些 RESTful 服务的 XSD 架构。当与xsd.exe工具结合使用生成C#代码时,XSD的xs:date生成如下代码:

[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")]
public System.DateTime time {
get {
return this.timeField;
}
set {
this.timeField = value;
}
}

当使用 XmlSerializer 将 XML 反序列化为对象时,一切似乎都很好。我面临的问题是该服务希望日期格式为 YYYY-MM-DD hh:mm:ss 而 XSD 生成的代码似乎只生成 YYYY-MM-DD.

如果我手动将 XSD 修改为 xs:dateTime 类型,生成的 C# 代码将生成:2010-08-20T20:07:03.915039Z

基本上,我如何强制序列化生成 YYYY-MM-DD hh:mm:ss?是否可以对 XSD 做些什么,或者我可以做些什么来改变生成的 C# 代码?

最佳答案

过去,我通过以下方式来控制日期时间序列化:

  • 忽略 DateTime 属性。
  • 创建一个以我想要的方式序列化/反序列化的虚拟字符串属性

这是一个例子:

public class SomeClass
{
[XmlIgnore]
public DateTime SomeDate { get; set; }

[XmlElement("SomeDate")]
public string SomeDateString
{
get { return this.SomeDate.ToString("yyyy-MM-dd HH:mm:ss"); }
set { this.SomeDate = DateTime.Parse(value); }
}
}

关于c# - 强制 XmlSerializer 将 DateTime 序列化为 'YYYY-MM-DD hh:mm:ss',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com