Supose我使用BinaryFormatter
序列化了第三方库类型对象。不引用此库的程序会尝试反序列化字节。它会起作用吗?
我不希望它被转换为正确的类型,我只想将其作为object
实例检索,以便我可以将其分组并再次序列化。
答案 0 :(得分:2)
这应该可以正常工作,但前提是该库与应用程序一起部署。您不需要直接引用它。
在序列化期间,BinaryFormatter
存储完整的程序集名称(显示名称,公钥标记,版本号)以及类型信息。这足以让解串器关闭并再次加载该组件。请注意,未存储路径信息,因此需要在执行反序列化的应用程序中部署程序集。
答案 1 :(得分:1)
没有;如果未引用类型本身(以某种方式由某些已加载的程序集引用),则无法实例化它。即使您不需要(或想要)以强类型方式引用实例,对象本身仍必须是该类型的实例。
如果程序集可用(并且可被发现),那么它将被加载,但严格来说 no ,您将无法从完全未引用的程序集中反序列化类型。< / p>
答案 2 :(得分:1)
如果您只是想暂时获取序列化信息以便对其进行分组,那么您是否可以从序列化流中读取原始字节并对它们进行分组?也许进入List<byte[]>
实例?这假设最终目的地可以对每个字节数组所代表的信息做出一些假设。
答案 3 :(得分:0)
不,它不起作用,以反序列化您需要引用定义对象的程序集的对象。
答案 4 :(得分:0)
是的,如果您创建序列化活页夹,则可以将类型反序列化为其他类型。但是如果没有它的定义(你需要手头有程序集),你将无法实例化原始类型的实例。