我有一个用于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 all将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#代码吗?

推荐答案

在过go ,为了控制日期时间序列化,我做了以下工作:

  • 忽略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); }
    }
}

.net相关问答推荐

避免函数和其他对象之间的相互递归的模式?

为什么(真的吗?)List 实现所有这些接口,而不仅仅是 IList

编译时禁用 Dll 文化文件夹

我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?

实体框架无法加载指定的元数据资源

如何判断一个类型是否是简单类型?即持有一个单一的价值

控制台应用程序的退出时

使用 .NET 中的代码更改桌面墙纸

什么是 SUT,它来自哪里?

C# 的 Actors 有什么好的实现吗?

如何授予所有用户对我的应用程序创建的文件的完全权限?

关于 Enumerable.Range 与传统 for 循环的 foreach 的思考

互锁且易变

C#中的T是什么意思?

将 StreamReader 返回到开头

如何确定字符串是 C# 中的有效 IPv4 还是 IPv6 地址?

如何使我的托管 NuGet 包支持 C++/CLI 项目?

是否可以完全用托管的 .NET 语言编写 JIT 编译器(本地代码)

如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码:0xE0434352?

在 .NET 中乘以时间跨度