編輯:我的問題的解決方案是實現IXMLSerializer。感謝大家的快速反應。ISerialization構造函數沒有被調用
大家好,我有這個問題,我似乎沒有找到一個適當的解決方案。
我有以下類
public class Child
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
}
[Serializable]
public class Test: ISerializable
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
private Child _child = new Child();
public Child Child
{
get { return _child; }
set { _child = value; }
}
public Test()
{
}
protected Test(SerializationInfo info, StreamingContext context)
{
if (info.MemberCount > 1)
Child.Id = info.GetInt32("ChildId");
}
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("ChildId", Child.Id);
}
#endregion
}
如果我把下面的XML使用下面的代碼進行反序列化
<?xml version="1.0" encoding="utf-16"?><Test><Id>0</Id><ChildId>10</ChildId></Test>
反序列化
serializer.Deserialize(new StringReader("<?xml version="1.0" encoding="utf-16"?><Test><Id>0</Id><ChildId>10</ChildId></Test>");
我認爲這將要求我的序列化構造函數,但事情是,永遠不會被調用。
我現在用的是張貼以上XML,而不是這一個
<?xml version="1.0" encoding="utf-16"?><Test><Id>0</Id><Child><Id>10</Id></Child></Test>
因爲我越來越從另一個應用程序發佈的XML,所以我需要手動創建的子對象,並從內手動分配其價值構造函數。
我真的很感謝您能給我提供的所有幫助和指導。
我正在使用XmlSerializer,但我雖然在反序列化時會調用序列化構造函數。 – Paleta 2009-03-02 13:26:27
我應該使用什麼串行器? – Paleta 2009-03-02 13:27:05