我有一个自定义列表,我想将其作为资源嵌入,因此可以在每次新安装时将其复制出来。但是,我的列表被序列化为二进制文件,当我将其作为资源添加时,我不能将其复制出来,因为C#将其视为字节数组。当我从资源中提取文件时,我需要能够将此字节数组转换回我的自定义列表。有人能告诉我如何实现这种转换吗?
谢谢!
答案 0 :(得分:6)
你以什么方式序列化它?通常你会反转这个过程。例如:
BinaryFormatter bf = new BinaryFormatter();
using(Stream ms = new MemoryStream(bytes)) {
List<Foo> myList = (List<Foo>)bf.Deserialize(ms);
}
如果你使用了不同的序列化器,显然你可能需要调整它!或者,如果您可以将数据作为Stream
(而不是byte[]
)获取,则可能会失去MemoryStream
步骤......
答案 1 :(得分:1)
列表是如何序列化的?您应该有权访问等效的Deserialize()
方法,其结果可以转换回原始列表类型。
答案 2 :(得分:1)
您需要将字节数组反序列化为列表实例。执行此操作的方法取决于您序列化它的机制。例如,如果您使用BinaryFormatter
对其进行序列化,请使用相同的方法进行反序列化。