自动对整个类进行二进制序列化
本文关键字:二进制 序列化 | 更新日期: 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 接口,则可以使用反射循环访问此类中的所有项属性并设置其相应的值。