XmlArray属性应用于List派生类

时间:2012-03-07 12:43:58

标签: c# arrays attributes xml-serialization

我有

public class Convolutions : List<Convolution> { }

序列化为xml:

<ArrayOfConvolution>
     <Convolution>

但我想:

<Convolutions>
    <Convolution>

但是无法在课程中使用[XmlArray("Convolutions")][XmlElement(ElementName = "Convolutions")] 无论如何要实现这个目标?

2 个答案:

答案 0 :(得分:3)

[XmlType将(&#34;卷积&#34)]
公共类Convolutions:List&lt; Convolution&gt; {}

答案 1 :(得分:1)

如果那是根对象,那么:

[XmlRoot("Convolutions")]
public class Convolutions : List<Convolution> { }

如果它是另一个对象的成员,请使用该成员上的属性。

另一种方法,在许多情况下更灵活,是使用单独的包装器对象和封装列表;坦率地说,从列表继承通常不是很有帮助。以下方法可行:

public class Convolutions {
    [XmlElement("Convolution")]
    public List<Convolution> Items { get; set; }
}

或者如果您不喜欢收藏成员的set

public class Convolutions {
    private readonly List<Convolution> items = new List<Convolution>();
    [XmlElement("Convolution")]
    public List<Convolution> Items { get { return items; } }
}