Ich deserialisiere einen xml-String auf die Klasse 'Dummy'.
Im xsd ist das Feld 'num' mandatory und das Feld 'str' optional (minOccurs=0)
public class Dummy {
int numField;
string strField;
bool strFieldSpecified;
public int num {
get {
return this.numField;
}
set {
this.numField = value;
}
}
public string str {
get {
return this.strField;
}
set {
this.strField = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute]
public bool strSpecified {
get {
return this.strFieldSpecified;
}
set {
this.strFieldSpecified = value;
}
}
}
Kann man den (De)Serializer veranlassen, den Wert xxxSpecified automatisch zu setzen ?
Ich kann natürlich den Wert beim Setzen der zugehörigen Property selbst setzen, nur müsste ich dann alle optionalen Elemente manuel erweitern:
public string str {
get {
return this.strField;
}
set {
this.strField = value;
this.strFieldSpecified = true;
}
}
Bei WCF Services habe ich bemerkt, dass diese Specified-Felder automatisch gesetzt werden...
Hallo snupi,
ich bin nun leider auch nicht der Xml(de)serialisierungsexperte, aber XmlSerializer-Konstruktor (Type, XmlAttributeOverrides) in Verbindung mit XmlAttributeOverrides-Klasse sieht mir recht vielversprechend aus.
herbivore
habe nun bissi getestet und es muss das XmlElement()-Attribut gesetzt sein, dann wird auch xxxSpecified gesetzt