RestSharp - XmlSerializer 不使用 DateFormat 属性

RestSharp - XmlSerializer not using the DateFormat property

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

这个 属性 ,即使设置正确,似乎对序列化的影响为零。至少在使用默认 RestSharp.Serializers.XmlSerializer 时是这样。如果我尝试使用 DotNetXmlSerializer,DateFormat 可以正常工作,但是序列化器不包含我的 XMLNS link 并向 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, the underlying System.Xml.Serialization.XmlSerializer does not support custom DateTime formats, according to this answer