自动对整个类进行二进制序列化

本文关键字:二进制 序列化 | 更新日期: 2023-09-27 18:33:43

有没有办法在不指定每个对象的情况下序列化/反序列化整个类。

如果我打算添加更多项目,这将变得乏味。

例如:

[Serializable()]
    public class Items : ISerializable
    {
        public List<Product> ProdList;
        public List<Employee> EmpList;
        public List<ListProduct> BuyList;
        public List<ListProduct> SellList;
        public List<ListEmployee> EmpHours;
        public Items()
        {
            ProdList = new List<Product>();
            EmpList = new List<Employee>();
            BuyList = new List<ListProduct>();
            SellList = new List<ListProduct>();
            EmpHours = new List<ListEmployee>();
        }
        public Items(SerializationInfo info, StreamingContext ctxt)
        {
            ProdList = (List<Product>)info.GetValue("ProdList", typeof(List<Product>));
            BuyList = (List<ListProduct>)info.GetValue("BuyList", typeof(List<ListProduct>));
            SellList = (List<ListProduct>)info.GetValue("SellList", typeof(List<ListProduct>));
            EmpList = (List<Employee>)info.GetValue("EmpList", typeof(List<Employee>));
            EmpHours = (List<ListEmployee>)info.GetValue("EmpHours", typeof(List<ListEmployee>));
        }
        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("ProdList", ProdList);
            info.AddValue("BuyList", BuyList);
            info.AddValue("SellList", SellList);
            info.AddValue("EmpList", EmpList);
            info.AddValue("EmpHours", EmpHours);
        }
    }

自动对整个类进行二进制序列化

如果不想

使用帮助程序类(如 DataContractSerializer)并坚持实现 ISerializable 接口,则可以使用反射循环访问此类中的所有项属性并设置其相应的值。