.net WCF 4.5合同首先不生成简单类型“;“正确地”;

.net WCF 4.5合同首先不生成简单类型“;“正确地”;,.net,wcf,xsd,.net-4.5,contract-first,.net,Wcf,Xsd,.net 4.5,Contract First,我在XSD中定义了以下简单类型: <xs:simpleType name="TimeOfDay"> <xs:annotation> <xs:documentation xml:lang="en">The representation of a time value that does not include time zone/offset information.</xs:documentation> &l

我在XSD中定义了以下简单类型:

    <xs:simpleType name="TimeOfDay">
    <xs:annotation>
        <xs:documentation xml:lang="en">The representation of a time value that does not include time zone/offset information.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:time">
        <xs:minInclusive value="00:00:00"/>
        <xs:pattern value="(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-9]+)?"/>
    </xs:restriction>
</xs:simpleType>

不包含时区/偏移信息的时间值的表示形式。
当我使用.NET4.5中的WCFCodeGen功能从中生成C#代码时,它将此类型映射到DateTime。因此,当我们将数据协定序列化为XML时,该值无法通过模式验证,因为它包含完整的日期/时间值“dd-mm-yyyyth:mm:ss.fff”

你知道我们可以:

  • 生成的代码是否实现了必要的限制
  • 自定义序列化过程,以便只包含 该值将写入XML输出

  • .net不支持时间数据类型,它将使用DateTime。如果只需要返回时间部分,则需要将其更改为字符串或使用XmlSerialization更改格式。这里还有一个可以帮助您的实现:因为WCF代码生成器实际上不生成类文件,只生成dll中的类型,所以没有机会像那篇文章中描述的那样扩展类或注释属性。您可以使用xsd工具生成类,放置属性并编译类。或者,如果您真的想使用代码gem,您需要将数据类型更改为string。如果您将WSCF.blue称为“xsd工具”,那么我们不能。我们有一个跨多个文件和名称空间的复杂模式结构,我们已经发现WSCF.blue无法处理它。我们正在使用WCF 4.5中的内置代码生成功能。是的,关于xsd工具,您是对的,我也遇到了问题。我改用svcutil.exe,它可以很好地生成类。当对多个文件使用复杂模式时,所有文件的引用都必须是ok。只是想给你更多的选择。时间数据类型在.net中不受支持,它将使用DateTime。如果只需要返回时间部分,则需要将其更改为字符串或使用XmlSerialization更改格式。这里还有一个可以帮助您的实现:因为WCF代码生成器实际上不生成类文件,只生成dll中的类型,所以没有机会像那篇文章中描述的那样扩展类或注释属性。您可以使用xsd工具生成类,放置属性并编译类。或者,如果您真的想使用代码gem,您需要将数据类型更改为string。如果您将WSCF.blue称为“xsd工具”,那么我们不能。我们有一个跨多个文件和名称空间的复杂模式结构,我们已经发现WSCF.blue无法处理它。我们正在使用WCF 4.5中的内置代码生成功能。是的,关于xsd工具,您是对的,我也遇到了问题。我改用svcutil.exe,它可以很好地生成类。当对多个文件使用复杂模式时,所有文件的引用都必须是ok。只是想给你更多的选择。