具有以下結構如何在使用派生類的實例時序列化基類?
[Serializable]
public class Parent
{
public int x = 5;
}
[Serializable]
public class Child : Parent
{
public HashAlgorithm ha; //This is not Serializable
}
我想這個使用下面的代碼序列:
public class Util {
static public byte[] ObjectToByteArray(Object obj)
{
if (obj == null)
{
return null;
}
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
我在我的代碼Child
類型的對象的工作,但是,我有內場Child
不可序列化的對象(例如:HashAlgorithm)。因此,我試圖將轉換爲類型Parent
使用下面的代碼:
public byte[] tryToSerialize(Child c)
{
Parent p = (Parent) c;
byte[] b = Util.ObjectToByteArray(p);
return b;
}
然而,這將返回錯誤HashAlgorithm
不可序列化,儘管試圖序列不包括這一領域的孩子。我怎樣才能完成我所需要的?
在這種情況下,聽起來像正確的修復是[NonSerialized],正如已經提到的那樣。但是,作爲一個旁白,關於具體的問題,這個「忽略子類型」是我對protobuf-net調整列表中的一些東西(它只是表示*不做*做某事,所以是一個簡單的修復) – 2011-01-30 08:48:52