Supose我用BinaryFormatter
序列化了第三方库类型对象。未引用此库的组件会尝试反序列化字节。它会起作用吗?IFormatter是否可以取消未引用类型的对象?
我不希望它被强制转换为正确的类型,我只是想找回它作为object
实例,这样就可以组并再次对其进行序列化。
Supose我用BinaryFormatter
序列化了第三方库类型对象。未引用此库的组件会尝试反序列化字节。它会起作用吗?IFormatter是否可以取消未引用类型的对象?
我不希望它被强制转换为正确的类型,我只是想找回它作为object
实例,这样就可以组并再次对其进行序列化。
这应该做工精细,但前提是该库部署与应用。你不需要直接引用它。
在序列化期间,BinaryFormatter
将存储完整程序集名称(显示名称,公钥标记,版本号)以及类型信息。这对于解串器来说是足够的信息,并且再次加载该程序集。请注意,路径信息并未存储,因此需要在执行反序列化的应用程序中部署程序集。
否;如果类型本身没有被引用(以某种方式由某个加载的程序集引用),那么它不能被实例化。即使您不需要(或想要)以强类型的方式引用实例,对象本身仍然必须是该类型的实例。
如果程序集可用(和发现),那么它将被加载,但在严格意义上没有,你将无法从一个完全未引用的组件反序列化类型。
不,它不会工作,为了反序列化您需要引用定义对象的程序集的对象。
如果您只是想暂时获得序列信息,以便您可以组它,你能刚刚从序列化流,并将它们组合读取原始字节?也许成为List<byte[]>
实例?这假定最终目的地可以对每个字节数组表示的信息做出一些假设。
感谢您的建议 – 2009-12-10 19:52:17
是的,如果你创建一个序列化绑定器,你可以反序列化为不同类型的类型。但你不能够实例化的原始类型的实例没有它的定义(到你需要手头上有装配)
与downvote是什么?这个信息是错误的吗? – 2009-12-10 19:32:02
两个罗宾逊在同一线程=) – 2009-12-10 19:54:05