我有一个开发需要在VB6应用程序和C#类库之间传递对象。对象在C#类库中定义,并用作同一库中其他类公开的方法的参数。这些对象都包含简单的字符串/数字属性,因此封送相对无痛。
我们现在需要传递一个包含其他对象列表的对象。如果我在VB6中对此进行编码,我可能会有一个包含集合作为成员变量的类。在C#中,我可能有一个带有List成员变量的类。
是否可以构建一个C#类,使VB6应用程序可以填充此内部列表并成功编组?我在这里没有很多经验,但我想我必须使用一个Object类型数组。
答案 0 :(得分:2)
COM中的选项比C#中的选项更受限制:
您不能使用泛型(COM不支持此功能,TLBEXP会将其排除在外)
有旧的ArrayList类。或者数组。
COM互操作层将自动为实现IEnumerable(非泛型版本)的C#类生成COM枚举器,您可以使用For Each在VB6端迭代它。
类似地,它为实现COM枚举器的COM类生成IEnumerable。您可以在C#代码中使用foreach来枚举VB6 Collection。根据谁创建集合,在它们之间进行选择。