假设您有一个由Coclass1和Coclass2两个类实现的COM接口ICOMInterface。这两个coclasses都没有自己的接口(为了简单起见,也为了说明我的问题)。
在C#中,您可以从coclass创建COM接口的实例,如下所示:
ICOMInterface myComInterface = new Coclass1();现在,如何确定myComInterface是由Coclass1还是Coclass2实例化的
像下面这样使用" is“语句总是返回true,因此对于这个目的是无用的。
Debug.WriteLine(myComInterface is Coclass1) // writes "True"
Debug.WriteLine(myComInterface is Coclass2) // writes "True"如果我测试的是接口,而不是coclasses,那么这是可行的,但是这些coclasses除了它们都实现的接口ICOMInterface之外,没有其他接口。
我希望对这个我忽略的相当通用的场景有一个简单的答案,否则如果需要的话,我可以发布更具体的细节。
谢谢你的帮忙!
发布于 2010-08-03 05:56:04
如果COM对象实现IPersist接口,则可以通过IPersist::GetClassID()方法获取其CLSID。这可能就是您需要知道正在使用的类的全部内容。您还可以通过WinAPI ProgIDFromCLSID()方法获得人类可读的ProgID。
https://stackoverflow.com/questions/3348554
复制相似问题