c#serialize嵌套类

我正在尝试序列化一系列虚拟订单,其中每个订单都包含一个产品。 该集合正在序列化,但订单中的示例产品属性正在被遗漏。

订单收集

[XmlRoot("Orders")] public class OrderCollection : ICollection { private static List _orders; private List Orders { get { if(_orders == null) { _orders = new List(); } return _orders; } } //All the ICollection functions } 

订购

 public class Order { [XmlElement("Id")] public int Id { get; set; } [XmlElement("Title")] public string Title { get; set; } [XmlElement("IsReserved")] public bool IsReserved { get; set; } [XmlElement("Count")] public int Count { get { return this.Products.Count; } set { } } // not serializing [XmlElement("Product")] public Product ProductTest { get { return new Product(); } } // not serializing [XmlArray("Products")] public ICollection Products { get { return this._products; } } private List _products; public Order() { var rand = new Random(); var count = rand.Next(1, 5); this._products = new List(); for (int i = 0; i < count; i++) { this._products.Add(new Product()); } } } 

产品

 [Serializable] public class Product { [XmlElement("Id")] public int Id { get; set; } [XmlElement("Title")] public string Title { get; set; } public Product() { var rand = new Random(); this.Id = rand.Next(100, 9999); this.Title = "Product " + this.Id; } } 

产量

    619883 Order 619883 false 3   961448 Order 961448 false 3   483677 Order 483677 false 2   512026 Order 512026 false 2   916029 Order 916029 false 4   109800 Order 109800 false 4   

我完全不知所措。 深度序列化似乎正在起作用,因为否则订单不会在OrderCollection中被序列化,但它会停止。 任何建议?

您必须将ICollection更改为List。 接口不可序列化。

 [XmlArray("Products")] public List Products { get { return this._products; } } 

并且ProductTest因为缺少setter而无法工作

您无法序列化界面..

界面只不过是对一组行为的描述。 它没有说明实例的内容。 特别是,虽然实现接口的类的实例必须实现其所有成员,但它肯定具有自己需要序列化的属性。

PS:从Serializing接口复制

转入列表。

公共列表产品{

}