XSD.EXE生成的代码问题:元素序列生成为数组

时间:2009-07-22 15:09:58

标签: c# xsd

我正在尝试使用xsd.exe

从XSD生成C#代码

以下是问题区域的片段

<xs:element name="EmailConfiguration" minOccurs="1" maxOccurs="1">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="DefaultSendToAddressCollection" minOccurs="0" maxOccurs="1">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="EmailAddress" type="xs:string" minOccurs="1" maxOccurs="unbounded" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>

        </xs:sequence>
      </xs:complexType>
    </xs:element>

目前,DefaultSendToAddressCollection正在生成为字符串[]

如何更改xsd,以便将其生成为强类型,将电子邮件地址作为强类型的集合生成?

问题更新:

或者xsd.exe是否有错误?

1 个答案:

答案 0 :(得分:2)

您已将EmailAddress指定为类型xs:string而非复杂类型 - 因此,DefaultSendToAddressCollection是字符串数组,而不是对象集合。

如果您将EmailAddress更改为复杂类型,并为其提供xs:attribute类型xs:string来存储地址,则最终会得到一组EmailAddress对象。

<xs:element name="EmailConfiguration" minOccurs="1" maxOccurs="1">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="DefaultSendToAddressCollection" minOccurs="0" maxOccurs="1">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="EmailAddress" minOccurs="1" maxOccurs="unbounded">
                  <xs:complexType>
                    <xs:attribute name="Address" type="xs:string" />
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>