Supposons que vous ayez une interface COM ICOMInterface
implémentée par coclasses Coclass1
et Coclass2
. Aucune de ces coclasses n’a d’interface propre (par souci de simplicité et pour illustrer mon propos).
En C #, vous pouvez créer une instance d’une interface COM à partir d’une coclasse comme ceci:
ICOMInterface myComInterface = new Coclass1();
Maintenant, comment pouvez-vous déterminer si myComInterface
été instancié par Coclass1
ou Coclass2
?
L’utilisation de l’instruction “is” comme suit renvoie toujours la valeur true et, en tant que telle, est inutile à cette fin.
Debug.WriteLine(myComInterface is Coclass1) // writes "True" Debug.WriteLine(myComInterface is Coclass2) // writes "True"
Cela fonctionnerait si je testais des interfaces, pas des coclasses, mais ces coclasses n’ont pas d’interfaces autres que celle qu’ils implémentent, ICOMInterface
.
J’espère qu’il y a une réponse simple à ce scénario plutôt générique que je néglige, sinon je peux poster des détails plus spécifiques si nécessaire.
Merci de votre aide!
Si l’object COM implémente l’interface IPersist , vous pouvez obtenir son CLSID via la IPersist::GetClassID()
. C’est peut-être tout ce dont vous avez besoin pour savoir dans quelle classe vous travaillez. Vous pouvez également obtenir le ProgID lisible par l’homme via la méthode ProgIDFromCLSID()
.
Voir ici: C # Obtenir le progID de l’object COM