gpt4 book ai didi

c# - RestSharp - XmlSerializer 不使用 DateFormat 属性

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:03 24 4
gpt4 key购买 nike

我遇到了 RestSharp 库的问题。默认情况下,它使用 dd/MM/yyyy HH:mm:ss 格式序列化 DateTime 对象。这不适用于我的 WCF 服务,该服务似乎只接受 yyyy-MM-ddTHH:mm:ss,因此我尝试使用 request.DateFormat = 更改请求的序列化“yyyy-MM-ddTHH:mm:ss

这个属性,即使设置正确,似乎对序列化的影响为零。至少在使用默认 RestSharp.Serializers.XmlSerializer 时是这样。如果我尝试使用 DotNetXmlSerializer,DateFormat 可以正常工作,但随后序列化程序不包含我的 XMLNS 链接并向 xml 输出添加版本和编码行,其中一个或两个不兼容也可以使用 WCF 服务。

有人对我在 XmlSerializer 上做错了什么有什么建议吗?

这里是相关的代码块:

var req = new RestRequest(endpoint, Method.POST);
req.RequestFormat = DataFormat.Xml;
//req.XmlSerializer = new DotNetXmlSerializer();
req.XmlSerializer = new XmlSerializer();
req.DateFormat = DATE_FORMAT;
req.AddBody(model, XMLNS);

private const string DATE_FORMAT = "yyyy-MM-ddTHH:mm:ss"XMLNS 是 WCF 请求中使用的 URL(取自端点/帮助文档)。

最佳答案

看起来像RestRequest.DateFormat仅在反序列化时使用:

    /// <summary>
/// Used by the default deserializers to explicitly set which date format string to use when parsing dates.
/// </summary>
public string DateFormat { get; set; }

对于序列化,您需要在 serializer 上显式设置它:

    req.XmlSerializer = new XmlSerializer { DateFormat = DATE_FORMAT };

请注意,对于 DotNetXmlSerializer , 底层 System.Xml.Serialization.XmlSerializer根据 this answer,不支持自定义 DateTime 格式.

关于c# - RestSharp - XmlSerializer 不使用 DateFormat 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33814982/

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