XSD.exe игнорирует простые сложные типы

У нас есть большой сервис wcf и большой документ xsd, в котором есть несколько элементов и сложных типов. Мы создаем код с помощью xsd.exe и используем XmlSerializerFormat в нашем ServiceContract для службы WCF, чтобы снова сериализовать эти объекты.

Теперь у нас проблема с xsd.exe и определениями массива строк.

Image у нас есть следующий элемент, определенный..

<xs:element name="Configuration" type="Configuration"/>
<xs:complexType name="Configuration">
    <xs:sequence>
    <xs:element name="Name" type="xs:string"/>
    <xs:element name="Parameters" type="Parameters" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Parameters">
     <xs:sequence>
    <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
      </xs:sequence>
  </xs:complexType>

что приведет к:

 /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://mynamespace.com/")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace="http://mynamespace.com/", IsNullable=false)]
    public partial class Configuration {

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
        public string Name;

        /// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
        [System.Xml.Serialization.XmlArrayItemAttribute("Parameter", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
        public string[] Parameters;
    }

Как видите, инструмент xsd.exe достаточно умен, чтобы увидеть сложный тип Parameters, поэтому он делает его string[].

Проблема в том, что если мы используем это в нашем сервисе WCF, он создаст ArrayOfString сложных типов вместо нашего Parameters сложного типа. Хуже того, у нас есть несколько string[], в результате которых получается ArrayOfString1, ArrayOfString2, ArrayOfString3 и так далее.

Возникает вопрос: как избежать того, чтобы XSD сглаживал наш сложный тип Parameters?


person Arcturus    schedule 07.12.2012    source источник
comment
Это файл xsd, а не файл wsdl;), поэтому wsdl.exe не генерирует код.   -  person Arcturus    schedule 07.12.2012
comment
вы можете попробовать xsd2code.codeplex.com, который дает такие параметры, как получение списков вместо массивов, и это может вам помочь.   -  person Aravind    schedule 19.12.2012