gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:06 24 4
gpt4 key购买 nike

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

在 C# 中,您可以像这样从 coclass 创建 COM 接口(interface)的实例:

ICOMInterface myComInterface = new Coclass1();

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

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

Debug.WriteLine(myComInterface is Coclass1) // writes "True"
Debug.WriteLine(myComInterface is Coclass2) // writes "True"

如果我测试的是接口(interface)而不是组件类,这会起作用,但这些组件类除了它们都实现的接口(interface)之外没有其他接口(interface),ICOMInterface

我希望对这个我忽略的相当普遍的场景有一个简单的答案,否则我可以根据需要发布更具体的细节。

感谢您的帮助!

最佳答案

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

参见此处:C# Get progID from COM object

关于C# - 如何在运行时测试哪个 COM coclass 用于实例化接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com