我试图保留两个不同版本的对象上的数据,但没有任何成功。谁能告诉我我做错了什么?使用[XmlAnyElement]
版本的一个类的:
[DataContract (Name="Person")]
public class Person_V1
{
[DataMember(Name = "Name")]
public string Name;
[DataMember(Name = "Age")]
public int Age;
[XmlAnyElement]
public XmlElement[] XElements;
}
版之类的二:
[DataContract(Name = "Person")]
public class Person_V2
{
[DataMember(Name = "Name")]
public string Name;
[DataMember(Name = "Age")]
public int Age;
[DataMember(Name = "Weight")]
public int Weight;
[XmlAnyElement]
public XmlElement[] XElements;
}
对象的保存V2:
private void btnSave_V2_Click(object sender, EventArgs e)
{
Person_V2 p = new Person_V2() { Name = "Carrie", Age = 31, Weight = 125 };
var ds = new DataContractSerializer(typeof(Person_V2));
XmlWriterSettings settings = new XmlWriterSettings() { Indent = true };
using (XmlWriter w = XmlWriter.Create("person.xml", settings))
ds.WriteObject(w, p);
}
恢复对象的V2到V1对象。希望看到保存在XElements阵列中的权重参数信息,但它不会发生
private void btnRestore_V1_Click(object sender, EventArgs e)
{
Person_V1 p;
var ds = new DataContractSerializer(typeof(Person_V1));
XmlReaderSettings settings = new XmlReaderSettings();
using (XmlReader r = XmlReader.Create("person.xml", settings))
p = (Person_V1)ds.ReadObject(r);
MessageBox.Show(p.Name + " " + p.Age);
}
我不希望看到这一点。 – 2011-12-15 12:48:16