RestSharp-XmlSerializer未使用DateFormat属性
本文关键字:属性 DateFormat 未使用 RestSharp-XmlSerializer | 更新日期: 2023-09-27 18:23:34
我遇到了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; }
对于序列化,您需要在序列化程序上显式设置它:
req.XmlSerializer = new XmlSerializer { DateFormat = DATE_FORMAT };
请注意,根据这个答案,对于DotNetXmlSerializer
,底层System.Xml.Serialization.XmlSerializer
不支持自定义DateTime格式。