如果我序列化派生類,即使使用XmlInclude屬性,我也無法反序列化基類。它因「沒有預料到」而失敗。如果我使用與序列化數據相同的序列化程序實例,它將起作用。如果我創建了一個新的序列化程序(就像它在另一個進程中一樣),它會失敗。即使使用XmlInclude,XmlSerializer.Deserialize也不能與基類一起工作
[Serializable]
[XmlInclude(typeof(D))]
public class B
{
public string x { get; set; }
}
public class D : B
{
public string y { get; set; }
}
... code snippet ....
D x = new D();
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(D));
serializer.Serialize(ms, x);
ms.Flush();
ms.Seek(0, SeekOrigin.Begin);
string responseBuffer = Encoding.ASCII.GetString(ms.GetBuffer());
ms.Seek(0, SeekOrigin.Begin);
serializer = new XmlSerializer(typeof(B));
B x2 = (B)serializer.Deserialize(ms);
}
正如我前面提到的,如果我使用原始序列化程序(typeof(D))它的工作原理。如果我重新創建串行器(typeof(B))。 在此先感謝您的幫助,
你可以看看這裏 http://stackoverflow.com/questions/12237268/how-to-implement-xml-serialization-with -inherited-class-in-c-sharp – Darshana