Je cette partie et xsd:xsd2code généré jette l'erreur de XmlChoiceIdentifierAttribute
<xs:element name="TimePeriod" nillable="false">
<xs:complexType>
<xs:choice>
<xs:element name="StartTime" type="xs:dateTime" nillable="false"/>
<xs:element name="StopTime" type="xs:dateTime" nillable="false"/>
</xs:choice>
</xs:complexType>
</xs:element>
Avec ce code que je suis arrivé de xsd2code:
public partial class ActivityTYPETimePeriod
{
private System.DateTime itemField;
private ItemChoiceType itemElementNameField;
public System.DateTime Item
{
get
{
return this.itemField;
}
set
{
this.itemField = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public ItemChoiceType ItemElementName
{
get
{
return this.itemElementNameField;
}
set
{
this.itemElementNameField = value;
}
}
}
public enum ItemChoiceType
{
/// <remarks/>
StartTime,
/// <remarks/>
StopTime,
}
Cela me donne cette sortie:
<TimePeriod>
<Item>2016-11-07T09:50:41.27</Item>
</TimePeriod>
mais je voudrais être comme ça si StartTime est la sélection d'enum:
<TimePeriod>
<StartTime>2016-11-07T09:50:41.27</StartTime>
</TimePeriod>
Mais quand j'utilise cette décoration (aussi de xsd2code):
[System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemElementName")]
public System.DateTime Item
je suis levé une exception en disant:
{ "membre manquant 'TimeElementName' nécessaire pour la sérialisation de choix 'Item'. "}
Je ne peux pas mettre le doigt sur pourquoi il jette cette erreur que je semble se souvenir r il fonctionnait avant d'éditer d'autres parties de ma classe et quand je débogue le code, le TimePeriod
reçoit également les valeurs correctes et l'exception n'est pas levée jusqu'à ce que j'atteigne la ligne: var serializer = new XmlSerializer (this.GetType());
Existe-t-il un autre moyen d'obtenir la sortie désirée ou de résoudre cette exception?