是否有一个很好的解决方案与版本信息持久化状态(因为不同的发布应用程序可能有一些变化的状态对象)
本文关键字:状态 应用程序 可能有 对象 变化 因为 解决方案 很好 有一个 版本 信息 | 更新日期: 2023-09-27 18:10:36
我想将项目的状态保存到磁盘,并在下次重新打开项目时恢复状态。
。有一个ViewState
类用于状态
//Version 1:
class ViewState
{
public string ID{get;set;}
public string CheckedSomeState{get;set;}
public string ToRemoved{get;set;}// will removed in version2
public string ToRenamed{get;set;}// will renamed in version2
}
//Version 2:
class ViewState
{
public string ID{get;set;}
public string CheckedSomeState{get;set;}
public string NewStateVersion2{get;set;}//new in version2
public string ToRenamedNewNameVersion2{get;set;}
}
//Version 3:
...
问题:我想用xml序列化器将ViewState
序列化成xml文件。当'ViewState'被更改时的向后兼容性。(APP版本2可以打开的文件由APP版本1生成)
我有一个主意:使用'ViewState'项目的一些属性来标记新版本中的更改(如果有一些更改)。和自定义xml序列化器来持久化'ViewState'。如:
//Version 2:
class ViewState
{
public string ID{get;set;}
public string CheckedSomeState{get;set;}
[New]
public string NewStateVersion2{get;set;}
//[Removed]
//public string ToRemoved{get;set;}
[Rename(OldName="ToRenamed",NewName="ToRenamedNewNameVersion2")]
public string ToRenamedNewNameVersion2{get;set;}
}
对于这种情况是否有其他好的解决方案
您也可以创建一个属性字典或列表,并添加XML序列化属性,例如:
using System.Xml.Serialization;
[XmlRootAttribute("ViewState")]
class ViewState
{
[XmlAttribute("ID")
public string ID { get; set; }
[XmlArray("Attributes")]
[XmlArrayItem("Attribute")]
public List<Attribute> Attributes { get; set; }
}
[XmlRootAttribute("Attribute")]
class Attribute
{
[XmlAttribute("Key")]
public string Key { get; set; }
[XmlAttribute("Value")]
public string Value { get; set; }
}
然后你可以很容易地访问你所有的状态属性