自定义XML序列化 – 包括类名
我正在使用以下XML序列化输出:
1.0 Hello!
我有以下课程:
[Serializable] public class Message { public string Version { get; set; } public T Body { get; set; } } [Serializable] public class ExampleObject { public string EmampleOne { get; set; } }
如果我将它们单独序列化,我得到:
1.0 Hello!
和:
Hello!
所以如上所示,我希望内部主体包含类名 。
我使用generics,因为我需要有不同的Message Body,我用代码序列化:
var obj = new Message { Version = "1.0", Body = example }; var serializer2 = new XmlSerializer(typeof (Message));
正如@Marc Gravell在评论中建议的那样,你可以使用XmlAttributeOverrides :
var xmlOverrides = new XmlAttributeOverrides(); var attributes = new XmlAttributes(); attributes.XmlElements .Add(new XmlElementAttribute("ExampleObject", typeof (ExampleObject))); xmlOverrides.Add(typeof(Message), "Body", attributes); var serializer2 = new XmlSerializer(typeof(Message ), xmlOverrides);