自定义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);