Я работаю над веб-сервисом RESTful с веб-API WCF. Другая сторона предоставила файлы XSD. Я сгенерировал классы C # с помощью xsd.exe. Однако схема содержит один сложный тип, с которым у меня проблема:
<xs:complexType name="SearchableField">
<xs:choice>
<xs:element name="NumericValue" type="xs:float" minOccurs="1" maxOccurs="1"/>
<xs:element name="BooleanValue" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
</xs:choice>
<xs:attribute name="type" type="SearchableFieldType" use="required"/>
</xs:complexType>
Это сгенерированный код для сложного типа:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class SearchableField {
private object itemField;
private string typeField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("BooleanValue", typeof(bool), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
[System.Xml.Serialization.XmlElementAttribute("NumericValue", typeof(float), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public object Item {
get {
return this.itemField;
}
set {
this.itemField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string type {
get {
return this.typeField;
}
set {
this.typeField = value;
}
}
}
Вопрос: Как инициализировать свойство Item типа - это простой объект - чтобы его можно было сериализовать в соответствии со схемой.
Ограничение: Схема уже указана, поэтому я не могу изменить файл XSD.
Вот пример элемента XML, как он должен выглядеть:
<SearchableFields>
<SearchableField type="MEGAPIXELS">
<NumericValue>12</NumericValue>
</SearchableField>
<SearchableField type="WEATHER_RESISTANT">
<BooleanValue>true</BooleanValue>
</SearchableField>
<SearchableField type="WATER_RESISTANT">
<BooleanValue>false</BooleanValue>
</SearchableField>
</SearchableFields>