我想在這個例子中序列化父對象像序列化父對象的
static void Main(string[] args)
{
Child child = new Child
{
Id = 5,
Name = "John",
Address = "Address"
};
Parent parent = child;
XmlSerializer serializer =new XmlSerializer(typeof(Parent));
Stream stream=new MemoryStream();
serializer.Serialize(stream,parent); //this line throws exception
Parent p2 = (Parent) serializer.Deserialize(stream);
Console.ReadKey();
}
}
[Serializable]
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
}
[Serializable]
public class Child : Parent
{
public string Address { get; set; }
}
是我得到的異常文本是「沒有預期的類型CastParrentExample.Child。使用XmlInclude或SoapInclude屬性來指定靜態未知的類型。「 我想要達到的是得到真正的父類對象沒有子類字段。
您沒有通過分配引用來獲得「真正的」父對象。您將不得不創建一個新的Parent對象,並從Child對象的相應屬性中分配其屬性。更好的是通過XML來實現而不是通過XML序列化,而不是讓XML序列化器在反序列化時忽略序列化對象的實際類型(通過xsi:type指定的XML)很容易。 –
[How to XML serialize child class with its base class](http://stackoverflow.com/questions/4943360/how-to-xml-serialize-child-class-with-its-base-class) – svick
「你將不得不創建一個新的Parent對象,並從Child對象的相應屬性中分配它的屬性。」你能推薦一個簡單的方法來爲一個巨大的課程做到這一點嗎?反思也許? – Milos