您需要在一个类型上公开这两个属性并使用该[XmlText]
属性来指示它不应生成额外的元素:
using System;
using System.Xml.Serialization;
public class Comment
{
[XmlAttribute]
public string Name { get; set; }
[XmlText]
public string Value { get; set; }
}
public class Customer
{
public int Id { get; set; }
public Comment Comment { get; set; }
}
static class Program
{
static void Main()
{
Customer cust = new Customer { Id = 1234,
Comment = new Comment { Name = "abc", Value = "def"}};
new XmlSerializer(cust.GetType()).Serialize(
Console.Out, cust);
}
}
如果要将这些属性展平到对象本身(Customer
我的示例中的实例),则需要额外的代码来使对象模型假装适合XmlSerializer
想要的东西,或者完全独立的 DTO 模型。