c# - 通过 COM 为 C++ 客户端公开 C#

标签 c# c++ com com-interop

我们正在考虑通过 COM 向 C++ 客户端公开一些 C# 类型。在项目的整个生命周期中,我们预计会遇到哪些问题?例如。如何管理版本控制?

关于版本控制,从阅读 this 看来似乎我们应该装饰我们的类型以使用 [ClassInterface(ClassInterfaceType.None)] 公开并使用显式接口(interface)。这样我假设我们可以完全控制将暴露给 COM 客户端的接口(interface)。

提前致谢。

最佳答案

由于您使用的是 C++ 客户端,因此您绝对应该使用显式接口(interface)进行早期绑定(bind)。调度接口(interface)在使用 VBS 等脚本客户端时很有用,但对 C++ 客户端很少有用。

对接口(interface)进行版本控制的唯一方法是创建一个新接口(interface)(可能继承自原始接口(interface))。使用显式接口(interface)时,您可以完全控制此过程。

这意味着您应该为您打算通过 COM 公开的每个类创建一个接口(interface)。不要忘记用 ComVisible 和 Guid 属性标记每个接口(interface)和类。此外,您所有的类都必须具有默认构造函数。

关于c# - 通过 COM 为 C++ 客户端公开 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068092/

相关文章:

c++ - CustomDialogProc 必须是静态的吗? WinAPI

c# - 如何在 Java 中使用 C# System.DBNull.value?

c# - 如何拦截C#中的方法调用

c++ - CreateBuffer 抛出 "Access violation reading location"

c++ - 如何将模板实例传递给需要将模板参数传递给基类的函数?

c++ - 为什么我要重载 operator new 或 operator delete?

visual-c++ - 视觉 C++ : ATL Implementation of an Interface

C# 正则表达式(替换)

c# - 从其 http 请求中获取有关用户的信息

c# - C# 中用于嵌套节点的 XML 序列化