Изменение типа элемента в 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.