Только сегодня была именно эта проблема.
У меня есть обходной путь, чтобы вы могли обойти эту проблему, используя группу вместо выбора.
используя вышеуказанный xsd в качестве основы:
Перепишите:
<xs:choice id="RiskModelParameter">
<xs:element name="RiskModel" type="riskModel"/>
<xs:element name="FullCovariance" type="fullCovariance"/>
</xs:choice>
Кому:
<xs:group name="RiskModelGroup">
<xs:sequence>
<xs:element name="RiskModel" type="riskModel"/>
<xs:element name="FullCovariance" type="fullCovariance"/>
</xs:sequence>
</xs:group>
Ссылка на группу в вашем элементе:
<xs:element name="Foo">
<xs:complexType>
<xs:sequence>
<xs:element name="SomeFieldId" type="xs:int" />
<xs:group ref="RiskModelGroup" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Запустите xsd.exe, и результат будет следующим:
public partial class Foo {
private int someFieldIdField;
private riskModel riskModelField;
private fullCovariance fullCovarianceField;
/// <remarks/>
public int SomeFieldId {
get {
return this.someFieldIdField;
}
set {
this.someFieldIdField = value;
}
}
/// <remarks/>
public riskModel RiskModel {
get {
return this.riskModelField;
}
set {
this.riskModelField = value;
}
}
/// <remarks/>
public fullCovariance FullCovariance {
get {
return this.fullCovarianceField;
}
set {
this.fullCovarianceField = value;
}
}
}
Теперь у вас есть имена свойств RiskModel и FullCovariance
Foo f = new Foo()
f.RiskModel.name
или
f.FullCovariance.fromDate
Если вам требуется несколько объектов Items RiskModels и FullCovariance, вы можете добавить в последовательность новый элемент, имеющий RiskModelGroup.
Удачи!