В инструменте xsd.exe есть ошибки.Я не помню этот конкретный, но я помню, как находил проблемы с неровными массивами, и, возможно, это остается ошибкой.если вы хотите, вы можете использовать инструмент XsdObjbectGen , также от Microsoft, но выпущенный независимо и внеполосно из .NET SDK.
Одна вещь, которую вы могли бы сделать, это пойти в обратном направлении: написать код C #, затем сгенерировать схему с помощью xsd.exe и посмотреть, что отличается.Возможно, xsd.exe хочет, чтобы схема выглядела определенным образом, чтобы правильно генерировать правильный код для зубчатых массивов.
На самом деле, перечитав свой вопрос, вы никогда не сказали то, что действительно хотели.Вы хотите, чтобы SuccessType содержал массив массивов, или нет?
И это WarningsType или WarningType ?Есть некоторые разногласия между предоставленными фрагментами кода.
Предполагая, что вам нужен массив массивов, я написал этот код C #:
public class WarningType
{
public String oof;
}
public partial class SuccessType
{
private WarningType[][] warningsField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("Warning", typeof(WarningType[]), IsNullable = false)]
public WarningType[][] Warnings
{
get
{
return this.warningsField;
}
set
{
this.warningsField = value;
}
}
}
... и скомпилировал егов DLL.Затем я запустил xsd.exe в этой DLL-библиотеке и сгенерировал этот XSD:
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="WarningType" nillable="true" type="WarningType" />
<xs:complexType name="WarningType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="oof" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="SuccessType" nillable="true" type="SuccessType" />
<xs:complexType name="SuccessType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Warnings" type="ArrayOfArrayOfWarningType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfArrayOfWarningType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Warning" type="ArrayOfWarningType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfWarningType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="WarningType" nillable="true" type="WarningType" />
</xs:sequence>
</xs:complexType>
</xs:schema>
... и он туда и обратно.Если я затем запускаю xsd.exe в этой схеме, я получаю тип, который оборачивает массив массивов.