今天来到了一个奇怪的案例,这让我想到了delphi中的对象模型是如何工作的。同一类在两个不同的库中使用不兼容?
案例:
我们已经导入了SOAP服务,它暴露了几个方法,以对象作为参数。 Delphi生成我们用来与soap服务通信的类/接口,并且用作参数的对象都从TRemotable继承。
由于不同的原因,我们已将所有与soap服务的通信都放到dll中。
然后,我们尝试实例化应该在主可执行文件中发送的对象,并将其传递到库以进行序列化和发送。
现在,这并没有工作,但给了我没有想到的例外。
它表示我们试图发送到soap服务的对象必须从TRemotable继承,但它确实如此。通过检查对象,我们可以看到该类是从wsdl导入的类,并且父类确实是TRemotable。
使用软件包构建可解决此问题。
的问题是:
是它使得在一个源文件中定义的类,两个库之间共享的,在运行时最终成为不同的类?如果是这样,为什么呢?
据我所知,应该可以在库之间传递对象。那么,如何保证强大的输入以及对象实例在多大程度上相互兼容?
OK。然后,这是对我所猜测的内容的确认。其实,我喜欢这个,因为它强制我们有更好的设计...... – Vegar 2010-04-09 19:22:02