对于仅表示日期的OperationContract的参数(无时间组件或时区指示符),需要使用xs:Date,以避免客户端和服务器之间的时区转换的任何歧义或问题.
WCF当前仅支持用于序列化DateTime参数的xs:DateTime.
使用将被序列化为xs:Date的参数生成OperationContract的最简单方法是什么?
我正在考虑使用自定义.NET类型"public struct DateOnly"或类似的方法,使用隐式转换为标准DateTime,从而以某种方式自动生成wsdl作为xs:Date.
这是可能的,我将如何实施它?
如果有可能,我怀疑解决方案可能涉及在自定义类型上使用XmlSchemaProviderAttribute,但是我在此属性上找到的任何文档似乎都有些不透明.
更新
我发现很难相信它会增加获得解决方案的可能性,但我会遵循网站的建议并开始赏金.
为了清楚起见,赏金的条件是提供构建解决方案所需的所有信息,以便WCF OperationContract的参数可以是:
序列化为ws:Date并在生成的WSDL中描述.
可以是System.DateTime值,也可以隐式转换为DateTime.
现在我已经注意到了这一点,我在Connect中创建了一个新的建议,请完全支持xs:Date-Only参数和DataMembers的日期.我用四星评级(重要).
如果有人认为这很重要(或者不同意),那么请使用Connect对其进行投票或对其进行评论.
不幸的是,WCF 不支持 xs:Date 类型。您必须创建自己的“DateOnly”结构,例如:
<DataContract()> _
public struct DateOnly
<DataMember()> public Month as Integer
<DataMember()> public Day as Integer
<DataMember()> public Year as Integer
end struct
Run Code Online (Sandbox Code Playgroud)