Entré par un cas curieux aujourd'hui, cela m'a fait penser à la façon dont le modèle d'objet dans Delphi fonctionne vraiment.même classe utilisée dans deux bibliothèques distinctes non compatibles?
Le cas:
Nous avons importé un service SOAP qui exposent quelques méthodes, prendre des objets en tant que paramètres. Delphi génère des classes/interfaces que nous utilisons pour communiquer avec le service soap, et les objets utilisés comme paramètres héritent tous de TRemotable.
Pour différentes raisons, nous avons mis toute la communication avec le service de savon dans une DLL.
Nous avons ensuite tenté d'instancier les objets à envoyer dans l'exécutable principal et de les transmettre à la bibliothèque pour la sérialisation et l'envoi. Maintenant, cela n'a pas fonctionné, mais a donné une exception que je ne m'attendais pas.
Il a dit que l'objet que nous essayons d'envoyer au service de soap doit hériter de TRemotable, mais c'est le cas. En inspectant l'objet, nous pouvons voir que la classe est la classe importée du wsdl, et que la classe parente est en effet TRemotable. Construire avec des packages permet de résoudre ce problème.
La question:
Est-ce de sorte qu'une classe définie dans un fichier source, partagé entre deux bibliothèques, finit aussi différentes classes à l'exécution? Si oui, pourquoi? Pour autant que je sache, il devrait être acceptable de passer des objets entre les bibliothèques. Comment, alors, est-ce que le typage fort est assuré, et dans quelle mesure les instances d'objet seront-elles compatibles les unes avec les autres?
OK. Ceci est une confirmation de ce que j'ai deviné, alors. En fait, j'aime ça, parce que ça nous force un meilleur design ... – Vegar