我们正在考虑通过COM向C ++客户端公开一些C#类型。我们可以期待在项目的整个生命周期中遇到什么问题?例如。如何管理版本控制?
在版本控制方面,从阅读this开始,我们应该使用[ClassInterface(ClassInterfaceType.None)]
来修饰我们的类型并使用显式接口。这样我认为我们完全控制将暴露给COM客户端的接口。
提前致谢。
答案 0 :(得分:2)
由于您使用的是C ++客户端,因此您应该使用显式接口进行早期绑定。使用诸如VBS之类的脚本客户端时,Dispatch接口很有用,但它们对C ++客户端很少有用。
对接口进行版本控制的唯一方法是创建一个新接口(可能继承自原始接口)。使用显式接口时,您可以完全控制此过程。
这意味着您应该为要通过COM公开的每个类创建一个接口。不要忘记使用ComVisible和Guid属性标记每个接口和类。此外,您的所有类都必须具有默认构造函数。
答案 1 :(得分:1)
您必须阅读GUID属性(including this)以维护二进制兼容性,并且只在必要时重建客户端。
的ComVisible属性感兴趣答案 2 :(得分:1)
要完全控制COM接口,请在MIDL中定义它们。在C ++项目中使用这些接口构建类型库,然后将类型库导入C#并实现接口。
这种方法对于复杂的接口非常有用,其中编组不是一件容易的事。
版本应该是COM样式,更改GUID并添加新的或继承的接口。