gpt4 book ai didi

c# - Svcutil 在 DataContractAttribute 中生成错误的 Name 属性值

转载 作者:行者123 更新时间:2023-11-30 21:10:54 27 4
gpt4 key购买 nike

当我使用 svcutil.exe 从 xsd 文件中包含的定义生成 Customer 类时:

<xs:schema ...>

<xs:element name="customer" type="Customer" nillable="true" />

<xs:complexType name="Customer">
<xs:sequence>
<xs:element name="id" type="xs:decimal" minOccurs="0" />
<xs:element name="first_name" type="xs:string" />
<xs:element name="last_name" type="xs:string" />
<xs:element name="phone" type="Phone" minOccurs="0" />
<xs:element name="email" type="Email" minOccurs="0" />
<xs:element name="personal_id" type="xs:string" minOccurs="0" />
<xs:element name="address" type="Address" minOccurs="0" />
<xs:element name="status" type="CustomerStatus" />
</xs:sequence>
</xs:complexType>

</xs:schema>

我得到类的以下定义:

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="Customer", Namespace="http://www.bluewhite.pl/api/1.0")]
public partial class Customer : object, System.Runtime.Serialization.IExtensibleDataObject
{

DataContractAttribute 的 Name 属性具有无效值:“Customer”(以大写字母开头),因为根据 xs:element 的 name 属性,它应该是:“customer”(以小写字母开头)。

我按如下方式启动 svcutil.exe:

svcutil.exe" *.xsd /t:code /dconly /n:*,Esap.AdtZapisoMessages /o:Messages.cs /tcv:Version35

生成的xml必须包含一个名为“customer”的根元素,我问你,为什么svcutil.exe会报这个错。

最佳答案

svcutil 在那里是完全正确的; type 的名称是 Customer。来自:

<xs:complexType name="Customer">

小写的 customer 与作为根元素的用法相关,但是,它更像是 xsd/SOAP 的东西,并不简单地与孤立的契约(Contract)类型。请注意,svcutil 对契约(Contract)类型感兴趣;它是与 xsd.exe 不同的工具。

如果要匹配特定的 xml 布局,svcutil 简直是错误的工具;这是 xsd.exe 的工作。我希望 xsd.exe 会输出所需的 [XmlRoot("customer")]

我测试了一下,果然:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlRootAttribute("customer", Namespace="",
IsNullable=true)]
public partial class Customer {

关于c# - Svcutil 在 DataContractAttribute 中生成错误的 Name 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239630/

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