C# 在对列表使用XmlSerializer时,是否可以省略中间层?

C# 在对列表使用XmlSerializer时,是否可以省略中间层?,c#,.net,xml,xmlserializer,C#,.net,Xml,Xmlserializer,我的问题最好用一个简单的例子来描述。考虑这样的2个类: class Order { [XmlAttribute] int orderId; [XmlAttribute] int customerId; List<OrderItem> items; } class OrderItem { [XmlAttribute] int partCode; [XmlAttribute] int quantity; } <order orderId="...", cus

我的问题最好用一个简单的例子来描述。考虑这样的2个类:

class Order {
  [XmlAttribute] int orderId;
  [XmlAttribute] int customerId;
  List<OrderItem> items;
}

class OrderItem {
  [XmlAttribute] int partCode;
  [XmlAttribute] int quantity;
}
<order orderId="...", customerId="..." >
  <Items>
    <orderItem partCode="..." quantity="..." />
  </Items>
</order>
类顺序{
[XmlAttribute]int-orderId;
[XmlAttribute]int customerId;
清单项目;
}
类OrderItem{
[XmlAttribute]int部分代码;
[XmlAttribute]int数量;
}
使用XmlSerializer,这将序列化为如下内容:

class Order {
  [XmlAttribute] int orderId;
  [XmlAttribute] int customerId;
  List<OrderItem> items;
}

class OrderItem {
  [XmlAttribute] int partCode;
  [XmlAttribute] int quantity;
}
<order orderId="...", customerId="..." >
  <Items>
    <orderItem partCode="..." quantity="..." />
  </Items>
</order>

我要做的是移除标高,使元素直接位于相应的


有什么方法可以做到这一点吗?

使用
xmlement
属性:

class Order {
  [XmlAttribute] int orderId;
  [XmlAttribute] int customerId;
  [XmlElement]
  List<OrderItem> items;
}
类顺序{
[XmlAttribute]int-orderId;
[XmlAttribute]int customerId;
[XmlElement]
清单项目;
}
使用此属性,您还可以为
OrderItem
对象指定自定义元素名称,甚至为
OrderItem
的每个子类型指定不同的元素名称