C++ 向COM中的API发送键值对数组的最佳方法
我想用API创建一个接口,可以接受COM中的键值对数组。 最好的方法是什么?C++ 向COM中的API发送键值对数组的最佳方法,c++,com,C++,Com,我想用API创建一个接口,可以接受COM中的键值对数组。 最好的方法是什么? 我可以考虑发送BSTR的SAFEARRAY。每个BSTR都可以被视为键值对。需要添加打包/解包键值的逻辑。我不会将BSTR用于非字符串用途——它可能会节省您一纳秒的时间,但最终会在您需要扩展或移植代码时出现问题。我只会使用索引为0、2、4的安全变量数组。。。以及1、3、5、…处的相应值,您可以为键值对引入一个接口,并为这些对的集合引入另一个接口。您需要定义“最佳”。COM是一个非常异构的平台,尽管它的设计者们都希望如此
我可以考虑发送BSTR的SAFEARRAY。每个BSTR都可以被视为键值对。需要添加打包/解包键值的逻辑。我不会将BSTR用于非字符串用途——它可能会节省您一纳秒的时间,但最终会在您需要扩展或移植代码时出现问题。我只会使用索引为0、2、4的安全变量数组。。。以及1、3、5、…处的相应值,您可以为键值对引入一个接口,并为这些对的集合引入另一个接口。您需要定义“最佳”。COM是一个非常异构的平台,尽管它的设计者们都希望如此。您期望和对象交互的客户机的性质(也称为什么语言?)应该会严重影响您的选择 举两个简单的例子:
- 正在从分类ASP调用?
您唯一的工具是变体。好的——您正在使用ATL:您唯一的工具是BSTR或变体的安全阵列
<> >从C++调用?
您可以使用自定义数据数组(在[size_is]上读取)。如果可能的话,甚至是固定大小的阵列。两边都容易
如果您发布更多关于您的情况的详细信息,我们可能会提供更具体的指导。请考虑
IPersistPropertyBag
,了解执行此操作的标准方法
考虑一个OLE属性集对象
如果您正在创建快速而肮脏的内容,请考虑接受Scripting.Dictionary
对象或ADODB.Record