2011-07-20 31 views
4

我的應用程序是一個小型的C#數據庫,我使用BinaryWriter將數據庫保存到與基本類型(如bool,uint32等)一起工作的文件。
儘管我得到了一個類型爲Object(允許用戶存儲任何數據類型)的變量,但是由於我的應用程序沒有(也不需要)知道這個變量的實際類型,我不確定如何使用BinaryWriter來編寫它。
有沒有辦法我可以抓住變量的內存並保存?這可靠嗎?在一個對象上使用BinaryWriter

編輯:

由ba_friend提供的答案具有用於解兩個功能/串行化對象爲一個字節數組,其可以與使用的BinaryWriter其長度沿被寫入。

回答

10

你可以使用序列化,特別是BinaryFormatter得到一個byte[]
注意:您正在序列化的類型必須標記爲可序列化的[Serializable]屬性。

public static byte[] SerializeToBytes<T>(T item) 
{ 
    var formatter = new BinaryFormatter(); 
    using (var stream = new MemoryStream()) 
    { 
     formatter.Serialize(stream, item); 
     stream.Seek(0, SeekOrigin.Begin); 
     return stream.ToArray(); 
    } 
} 

public static object DeserializeFromBytes(byte[] bytes) 
{ 
    var formatter = new BinaryFormatter(); 
    using (var stream = new MemoryStream(bytes)) 
    { 
     return formatter.Deserialize(stream); 
    } 
} 
+0

太感謝你了,我已經制定了如何使用連載的時候,雖然我不能看到如何使用這種技術來deserialise - 我已經更新的問題適當的文字。 – R4D4

+0

哈哈哈! :)哦,我正試圖從網上的衆多例子中解決它,到目前爲止,我的功能相比於優雅的3行長8行。感謝您的幫助。 :) – R4D4

+0

這可以工作,但它是迄今爲止在.net中序列化任何內容的最慢方法。 –

相關問題