在我的过程中,我加载了插件,我从中获取了我在其余过程中使用的对象
这个类继承自MyInterface
,因此序列化并不是什么大问题
我只是在其中实现了virtual const unsigned char* Serialize()
方法。
我无法弄清楚的是我如何反序列化它,因为反序列化方法应该是静态的,我不能这样做。
我是否必须从插件DLL中公开反序列化方法,或者有更好的方法吗?
答案 0 :(得分:0)
是否需要在DLL的导出中公开Deserialize
函数取决于应用程序的设计。如果您需要客户端调用Deserialize
函数,则需要公开它。
就其工作原理而言,Deserialize
需要具有与Factory Method相同的基本架构。除了对象中的所有好东西之外,序列化数据还需要指示它所代表的对象类型。否则,调用Deserialize
的人需要知道要反序列化的对象类型,但听起来这在您的场景中是不可能或不可取的。如果将对象类型存储为序列化数据的一部分,则可以在switch
方法中Deserialize
对其进行构建,并构造正确类型的对象。