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.