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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage