Изменение типа элемента в XML-сериализации

У меня огромные проблемы с сериализацией XML. У меня есть два класса, оба должны быть сериализуемыми. В унаследованном классе я хотел бы изменить поведение сериализации, чтобы свойство строки сериализовалось как сложный тип.

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);

Я пробовал разные подходы, но я не нашел способа изменить то, какNAME элемент get сериализован. В приведенном выше примере я получаю сообщение об ошибке:

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.

Ответы на вопрос(1)

Ваш ответ на вопрос