一个IFormatter可以反序列化不再被引用类型的对象?
-
19-09-2019 - |
题
Supose余序列与BinaryFormatter
第三方库类型的对象。这不引用的assemby这个库尝试反序列化的字节数。将它的工作?
我不希望它被强制转换为正确的类型,我只是想找回它作为object
实例,这样就可以组并再次对其进行序列化。
解决方案
这应该工作正常,但前提是该库部署与应用。你不需要直接引用它。
在序列化,与该类型信息一起存储BinaryFormatter
完整组件名(显示名称,公开密钥令牌,版本号)。这是足够的信息,解串器熄灭,再次加载该程序集。注意没有存储该路径信息,因此需要部署在不反序列化该应用程序集。
其他提示
没有;如果类型本身没有(通过一些加载组件以某种方式)引用,那么它不能被实例化。即使你并不需要(或希望)来引用实例的强类型的方式,对象本身仍然必须是类型的实例。
如果所述组件是可用的(且可发现),那么它将被加载,但是在严格意义上的没有,你将不能够从一个完全未引用的组件反序列化类型。
如果你只是想暂时获得序列信息,以便您可以组它,你能刚刚从序列化流,并将它们组合读取原始字节?也许到List<byte[]>
实例?这假定最终目的地可以对由每个字节数组表示的信息的一些假设。
没有,它不会工作,为了反序列化需要引用其中定义对象的组件的对象。
是,如果创建了序列化粘合剂,则可以反序列化类型不同的类型。但你不能够实例化的原始类型的实例没有它的定义(到你需要手头上有装配)
不隶属于 StackOverflow