我有一個自定義列表,我想將其嵌入爲資源,以便可以在每次新安裝時將其複製出來。但是,我的列表被序列化爲一個二進制文件,當我將它添加爲資源時,我不能將它複製出來,因爲C#將它視爲一個字節數組。當我從我的資源中提取文件時,我需要能夠將此字節數組轉換回我的自定義列表。有人能給我一個如何完成這種轉換的想法嗎?C#將字節數組轉換爲通用列表
謝謝!
我有一個自定義列表,我想將其嵌入爲資源,以便可以在每次新安裝時將其複製出來。但是,我的列表被序列化爲一個二進制文件,當我將它添加爲資源時,我不能將它複製出來,因爲C#將它視爲一個字節數組。當我從我的資源中提取文件時,我需要能夠將此字節數組轉換回我的自定義列表。有人能給我一個如何完成這種轉換的想法嗎?C#將字節數組轉換爲通用列表
謝謝!
你用什麼方式將它序列化了?通常情況下,你只會改變這個過程。例如:
BinaryFormatter bf = new BinaryFormatter();
using(Stream ms = new MemoryStream(bytes)) {
List<Foo> myList = (List<Foo>)bf.Deserialize(ms);
}
很明顯,如果您使用了不同的序列化程序,您可能需要調整它!或者,如果您可以將數據作爲Stream
(而不是byte[]
),那麼您可能會丟失步驟MemoryStream
...
列表如何被序列化?您應該有權訪問相應的Deserialize()
方法,其結果可以轉換回原始列表類型。
這是我如何序列化資源。 (!FiOhaus.Exists) { DirectoryUtil.DoesDataFileExist(OhausScale); (Stream St = new FileStream(OhausScale,FileMode.OpenOrCreate)) BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(St,Resources.Ohaus_Adventure_Pro); } } – Nathan 2009-10-25 21:23:01
這就是我如何反序列化文件回列表。 使用(流ST =新的FileStream(_directory + MODELNAME + 「.DAT」,FileMode.Open)) { 如果(St.Length> 0){ BinaryFormatter的格式化=新的BinaryFormatter(); 設置=(列表
您需要將字節數組反序列化回您的列表實例。要做到這一點的方式取決於您對其進行序列化的機制。例如,如果您使用BinaryFormatter
對其進行序列化,則使用相同的方法進行反序列化。
當您說有「列表」時,具體是什麼意思? – 2009-10-25 19:42:01