XSD.exe игнорирует простые сложные типы
У нас есть большой сервис wcf и большой документ xsd, в котором есть несколько элементов и сложных типов. Мы генерируем код с помощью xsd.exe и используем XmlSerializerFormat
на нашем ServiceContract
для службы WCF снова сериализовать эти объекты.
Теперь у нас проблема с xsd.exe и определениями массива строк.
Изображение у нас есть следующий элемент, определенный..
<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
сложный тип. Еще хуже, у нас есть несколько строк [], в результате чего ArrayOfString1
, ArrayOfString2
, ArrayOfString3
и так далее..
Вопрос в том, как мы можем избежать того, что XSD сглаживает Parameters
ComplexType?