首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# -如何在运行时测试哪个COM coclass用于实例化接口?

C# -如何在运行时测试哪个COM coclass用于实例化接口?
EN

Stack Overflow用户
提问于 2010-07-28 06:34:09
回答 1查看 424关注 0票数 2

假设您有一个由Coclass1Coclass2两个类实现的COM接口ICOMInterface。这两个coclasses都没有自己的接口(为了简单起见,也为了说明我的问题)。

在C#中,您可以从coclass创建COM接口的实例,如下所示:

代码语言:javascript
复制
ICOMInterface myComInterface = new Coclass1();

现在,如何确定myComInterface是由Coclass1还是Coclass2实例化的

像下面这样使用" is“语句总是返回true,因此对于这个目的是无用的。

代码语言:javascript
复制
Debug.WriteLine(myComInterface is Coclass1) // writes "True"
Debug.WriteLine(myComInterface is Coclass2) // writes "True"

如果我测试的是接口,而不是coclasses,那么这是可行的,但是这些coclasses除了它们都实现的接口ICOMInterface之外,没有其他接口。

我希望对这个我忽略的相当通用的场景有一个简单的答案,否则如果需要的话,我可以发布更具体的细节。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-03 05:56:04

如果COM对象实现IPersist接口,则可以通过IPersist::GetClassID()方法获取其CLSID。这可能就是您需要知道正在使用的类的全部内容。您还可以通过WinAPI ProgIDFromCLSID()方法获得人类可读的ProgID。

查看此处:C# Get progID from COM object

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3348554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档