Alterando o tipo de elemento na serialização XML

Estou tendo grandes problemas com a serialização XML. Eu tenho duas classes, ambas precisam ser serializáveis. Na classe herdada, eu gostaria de alterar o comportamento da serialização, para que uma propriedade string seja serializada como um tipo complexo.

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

Tentei abordagens diferentes, mas não encontrei uma maneira de mudar a maneira como oNAME O elemento get é serializado. Com o exemplo acima, recebo a mensagem de erro:

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.

questionAnswers(2)

yourAnswerToTheQuestion