BinaryFormatter
在我的代碼中表現怪異的方式。我有如下代碼binaryformatter如何序列化對象?
[Serializable]
public class LogEntry
{
private int id;
private List<object> data = new List<object>();
public int Id
{
get { return id; }
}
public IList<object> Data
{
get { return data.AsReadOnly(); }
}
...
}
....
....
private static readonly BinaryFormatter logSerializer = new BinaryFormatter();
....
....
public void SerializeLog(IList<LogEntry> logEntries)
{
using (MemoryStream serializationStream = new MemoryStream())
{
logSerializer.Serialize(serializationStream, logEntries);
this.binarySerializedLog = serializationStream.GetBuffer();
}
}
在某些機器(32位或64位機器)中,它是以二進制格式序列化 - 這是預期的。但在某些機器(他們都是64位的機器,而不是建立調試),它不序列化,binarySerializedLog
正顯示出所有單個Data
,類名(...LogEntry
)和id
價值ToString()
價值。我的問題是 - 這種行爲有特定的原因還是我犯了一些錯誤?提前致謝。
序列化成二進制格式後,它應該看起來像 - AAEAAAD ///// AQAAAAAAAAAMAgAAAHlNaWNyb3NvZnQ .... AAAAAAA == - 而不是那個,它顯示的東西像 - ExecutionResponse'1 [Response2] LogEntry2 - 其中ExecutionResponse'1 [RESPONSE2]是在。數據(在此特定情況下數據是包含類型ExecutionResponse的單個項目,其具有RESPONSE2對象(在此列出單個RESPONSE2對象)的列表中,LogEntry是當前的類名NAD 2是ID。 – malay 2009-12-08 06:48:55
井,後者則是廣泛的,我期望什麼 - 這看起來* *是原始數據,然後將字段之前那張類型的元數據...我不認爲這是錯誤的(但) – 2009-12-08 07:36:36
但在第二。如果不是所有的數據都出現在序列化日誌中,對嗎?我的意思是不可能從第二個日誌(即在ExecutionResponse'1 [Response2] LogEntry2)中反序列化。即使Response2是可序列化的,onse2仍然存在。 – malay 2009-12-08 09:15:21