日期:2014-05-18 浏览次数:21085 次
private EventType _type; [XmlIgnore] // 不要序列化这个属性 public EventType Type { get { return _type; } set { _type = value; } } [XmlAttribute("Type")] public int TypeInt { get { return (int)_type; } set { _type = (EventType)value; } }
------解决方案--------------------
1、不会增加额外的内存。虽然是两个属性,但它们共用了一个字段,无非就是多了一组方法,这个问题应该不用担心。
2、的确是个问题,我想到这样一个办法你试试。在反序列化之前,先分析一下数据的版本,如果是早期的版本,就对它进行预处理,把存放枚举值的节点的内容更改为枚举的名称,也就是进行了一次版本的提升,这样就可以按最新的方式进行反序列化。但是这样可能会有很大的体力工作要完成,呵呵。
------解决方案--------------------
原来的文件没有进行版本的标识没有关系啊,可以在新的文件格式里打上版本信息。这样在打开的时候,如果没有版本信息就按老格式来处理。