我試圖保留兩個不同版本的對象上的數據,但沒有任何成功。誰能告訴我我做錯了什麼?使用[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