使用C#结构将数据从C#COM对象传递到C ++

时间:2014-07-01 09:09:12

标签: c# c++ com

我在C#中实现了几个COM对象作为本地COM服务器。我的客户端是用C ++编写的。这次我使用COM对象(C#类)将数据从C ++传递到C#,它工作正常。我只是想,如果这些COM对象只是“数据持有者”,使用C#结构来保存数据会更有效吗?

1 个答案:

答案 0 :(得分:1)

一般不,特别是来自C#。这取决于您是否编写正确的 C ++代码。结构是一个互操作问题,包装和对齐规则是一个实现细节,很容易让你陷入麻烦。通过结构成员被编组的确切方式的变幻莫测, bool 类型有3种常见的方法来编组。字符串和数组永远不会成为问题。

编写正确的C ++代码需要使用IRecordInfo interface,它使用类型库中的struct定义来了解如何正确编组struct成员。您必须为结构中的每个字段执行此操作。

当您使用进程内COM服务器时,这不会比调用字段的属性getter快。唯一一种在C#中易于创建的类型。

您可以忽略此要求,并希望您的C ++声明与C#声明匹配。那可能有用。但通常只有在编组信息的成本太高时才应该做的事情。这只是当物业吸气剂的往返太高时,通常用于过渡公寓边界的呼叫。就像它对进程外服务器一样。