序列化另一个元素中的0-n个元素

Kje*_*sen 2 .net c# xml-serialization xmlserializer

我有两个这样的课程:

public class Product
{
    public string Name { get; set; }
    public int Id { get; set; }
}

public class Category
{
    public string CategoryName { get; set; }
    public List<Product> Products { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以在Category类上装饰我的Products属性,所以它是这样序列化的?

    <Container>
      <Category>
        <CategoryName>Unicorn Stuff</CategoryName>
        <Product>
          <Id>1212</Id>
          <Name>Unicorn Dust</Name>
        </Product>
        <Product>
          <Id>1829</Id>
          <Name>Horn Extension</Name>
        </Product>
        <Product>
          <Id>27373</Id>
          <Name>Facemask with hole</Name>
        </Product>
      </Category>
      <Category>
        <CategoryName>Pixie</CategoryName>
        <Product>
          <Id>222</Id>
          <Name>Pixie Dust</Name>
        </Product>    
      </Category>
    </Container>
Run Code Online (Sandbox Code Playgroud)

请注意,每个类别都有类别元素(类别名称)和0-n Product子元素.

...或者我是否需要以更加手动的方式生成文档?

(这不是我设计xml结构的方式,但是嘿 - 我们生活在一个不完美的世界)

Joh*_*ers 5

[XmlElement]属性放在列表中:

public class Category
{
    public string CategoryName { get; set; }
    [XmlElement]
    public List<Product> Products { get; set; }
}
Run Code Online (Sandbox Code Playgroud)