Comment obtenir le type de l'objet COM
Je suis le référencement d'une bibliothèque COM dans Visual Studio, il a automatiquement créé l'assembly Interop pour moi. Je voudrais faire un GetType()
sur ces objets com, mais ils reviennent toujours System.__ComObject
. En leur demandant une interface fonctionne bien:
bool isOfType = someComeObject is ISomeComObject; //this works
Mais ce que je veux vraiment, c'est ce à renvoyer le type réel de l'objet com:
Type type = someComeObject.GetType(); //returns System.__ComObject :-(
Personne ne sait comment faire ce que je veux faire?
Vous devez vous connecter pour publier un commentaire.
Ajouter une référence à
Microsoft.VisualBasic.dll
et puis:Référence MSDN ici.
Microsoft.VisualBasic.dll
est un .NET de l'assemblée qui peut être référencé et utilisé dans toutes les applications.La accepté de répondre par Darin nécessite une dépendance à
Microsoft.VisualBasic.dll
. Si vous ne voulez pas que vous pouvez utiliser cette classe helper:System.Runtime.InteropServices.ComTypes
pourITypeInfo
(IDE de Visual Studio auto-suggéréMicrosoft.VisualStudio.OLE.Interop.ITypeInfo
, mais c'est pas celui que vous voulez!)Vous avez pensé à elle. GetType() sur un objet COM va vous donner de Système.__ComObject, et vous devez essayer de jeter quelque chose d'autre pour voir ce que l'objet est vraiment.
Je suis tombé sur cette question il y a quelques jours alors que je cherchais le nom complet du type de
System.__ComObject
objet. J'ai fini par trouver le nom de type à l'aide de Darin la solution, puis une boucle dans toutes les classes dans toutes les assemblées de tester le match:Pas la manière la plus rapide et la plus élégante solution, mais cela a fonctionné.
someCOMObject as type
? Pas sûr que ça marcherait.as
mot clé fonctionne sur un type