Changing Elementtyp in der XML-Serialisierung
Ich habe große Probleme mit der XML-Serialisierung. Ich habe zwei Klassen, beide müssen serialisierbar sein. In der geerbten Klasse möchte ich das Serialisierungsverhalten so ändern, dass eine Zeichenfolgeeigenschaft als komplexer Typ serialisiert wird.
public class Animal
{
[XmlElement(ElementName = "NAME")]
public string Name { get; set; }
public virtual bool ShouldSerializeName() { return true; }
}
public class Cat : Animal
{
public override bool ShouldSerializeName() { return false; }
[XmlElement(ElementName = "NAME")]
public NameAndType Name2 { get; set; }
}
public class NameAndType
{
public string Name { get; set; }
public string Type { get; set; }
}
...
var cat = new Cat {Name2 = new NameAndType {Name = "LittleCat"}};
new XmlSerializer(typeof(Cat)).Serialize(Console.Out, cat);
Ich habe verschiedene Ansätze ausprobiert, aber ich habe keinen Weg gefunden, um zu ändern, wie dasNAME
Element wird serialisiert. Im obigen Beispiel erhalte ich die Fehlermeldung:
The XML element 'NAME' from namespace '' is already present in the current scope. Use XML attributes to specify another XML name or namespace for the element.