Csharp/C#教程:c#serialize嵌套类分享


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接口复制

转入列表。

公共列表产品{

}

上述就是C#学习教程:c#serialize嵌套类分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1008177.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐