Voilà je cherche quelques explications précises du mécanisme d'interface sous delphi. Et principalement sur l'effet d'un transtypage d'interface en une classe implémentant cette interface.
J'ai essayé de définir un système simple de 2 interfaces (interface1, interface2)
interface1 possède une propriété du type interface2
et interface2 possède une propriété du type interface1
il y a deux classes abstraitres (classe1, classe2) implémentant cette structure et pour représenter les propriétés j'utilise un champ de classe implémentant les interfaces correspondant à celles typant les propriétés respectives.
J'espère que je suis clair :-)
Et bien si je crée un objet de classé héritant de classe2 et que j'initialise bien tout, et que je récupère via la propriété d'interface1 l'objet de classe1 et que je le transtype j'obtiens un objet qui pointe sur n'importe quoi ... mais le champs fournit la bon objet ???
cela donne ceci
... et bien la avtdernière ligne ne fournit rien de correct alors que la derniere bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var Essai: classe2; tmp: classe1; begin Essai := heriteclasse2.Create(...); tmp := classe1(Essai.ProprieteInterface1); tmp := Essai.ChampInterface1detypeclasse1; end.
j'ajoute que chaque classe herite de TInterfaceObject
mon impression est que l'on ne peut pas transtyper une interface en une classe ... mais bon
alors si qqn pouvais éclairer ma pauvre antenne :-)) ce serait bien cool[/code]
Partager