Эта проблема в некоторой степени связана с:
Проблема с кодом, сгенерированным XSD.EXE: последовательность элементов генерируется как массив
По сути, я бы предпочел работать с ArrayList в коде C #, а не с массивом. У меня есть коллекция ошибок, и я пишу код для отправки дополнительных ошибок в уже существующую коллекцию ошибок. Или, если я найду первую ошибку, я должен создать экземпляр этого объекта и установить первую ошибку массива. Я не хочу иметь дело с изменением размера массива C #. Кажется, что было бы намного проще просто добавить ArrayList.
Я думаю, что вопрос, на который я ссылался выше, был своего рода вопросом того же, но в моем случае у меня есть сложный тип, а не простой.
В моей схеме есть поле с именем Status, которое содержит это:
<xs:element minOccurs="0" name="Errors">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Error">
<xs:complexType>
<xs:sequence>
<xs:element name="ErrorNumber" type="xs:string" />
<xs:element name="ErrorMessage" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Я использую xsd.exe для создания класса C #.
Я мог бы сделать «Ошибка» отдельной схемой и ссылаться на нее (создание схемы с помощью BizTalk 2006 / R2), если бы это имело какое-либо значение в генерируемом C #.
Сгенерированный класс C # выглядит следующим образом:
private StatusError [] errorsField;
[System.Xml.Serialization.XmlArrayAttribute(Form
= System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlArrayItemAttribute ( "Ошибка",
Форма =
System.Xml.Schema.XmlSchemaForm.Unqualified,
IsNullable = false)]
public StatusError [] Ошибки
{
получить
{
вернуть this.errorsField;
}
задавать
{
this.errorsField = value;
}
}}
[System.CodeDom.Compiler.GeneratedCodeAttribute ( "XSD",
"2.0.50727.1432")]
[System.SerializableAttribute ()]
[System.Diagnostics.DebuggerStepThroughAttribute ()]
[System.ComponentModel.DesignerCategoryAttribute ( "код")]
[System.Xml.Serialization.XmlTypeAttribute (AnonymousType
= true, пространство имен = "https://firstrepublic.com/EagleConnect/Status/")]
открытый частичный класс StatusError {
private string errorNumberField;
private string errorMessageField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form
= System.Xml.Schema.XmlSchemaForm.Unqualified)]
открытая строка ErrorNumber
{
получить
{
return this.errorNumberField;
}
задавать
{
this.errorNumberField = value;
}
}