flo*_*pes 5 c# serialization xmlserializer
我有一个从XML序列化/反序列化并存储在/从文件中恢复的类:
public class Customer
{
public string FirstName;
public string LastName;
public Customer()
{
}
public Customer(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public static Customer Load(TextReader reader)
{
XmlSerializer deserializer = new XmlSerializer(typeof(Customer));
return (Customer)deserializer.Deserialize(reader);
}
public void Save(TextWriter writer)
{
XmlSerializer serializer = new XmlSerializer(GetType());
serializer.Serialize(writer, this);
}
}
Run Code Online (Sandbox Code Playgroud)
在这个类的较新版本中,我添加了一个新属性
public string MiddleName;
Run Code Online (Sandbox Code Playgroud)
用户已经安装了我的程序的旧版本和新版本的常见用例.它们都读取和写入相同的序列化文件.当新版本写到文件中,所有的三个属性(FirstName,LastName,MiddleName)写入.旧程序读取文件但省略了未知元素MiddleName.它没有保存文件MiddleName,因此对于较新的程序它的值会丢失.
在序列化时反序列化和"合并"未知元素时,有没有办法存储原始XML?旧程序会忽略未知元素,但会将它们写回文件中,以免新程序丢失.
我现在无法测试它,因为我在Mac OS X上,但XmlAnyElement应该工作:
[XmlAnyElement]
public XmlElement[] Unsupported { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |