反序列化插件中定义的类

Deserializing a class defined in a plugin

本文关键字:定义 插件 反序列化      更新时间:2023-10-16

在我的进程中,我加载插件,从中获取我在其余过程中使用的对象。
这个类继承自MyInterface所以序列化它没什么大不了的。
我只是在其中实现了一个virtual const unsigned char* Serialize()方法。我无法弄清楚的是我如何反序列化它,因为反序列化方法应该是静态的,我不能做同样的事情。
我必须从插件 DLL 公开反序列化方法还是有更好的方法?

是否需要

在 DLL 的导出中公开 Deserialize 函数取决于应用程序的设计。 如果需要客户端调用 Deserialize 函数,则需要公开它。

就其工作原理而言,Deserialize需要具有与工厂方法相同的基本体系结构。 序列化数据需要指示它表示的对象类型,以及对象中的所有好东西。 否则,调用Deserialize的人需要知道要反序列化的对象类型,但听起来这在您的方案中是不可能的或不可取的。 如果将对象类型存储为序列化数据的一部分,则可以在 Deserialize 方法中对其进行switch,并构造正确的对象类型。