编组从VB6到C#的对象列表

时间:2010-04-27 12:11:49

标签: c# vb6 interop

我有一个开发需要在VB6应用程序和C#类库之间传递对象。对象在C#类库中定义,并用作同一库中其他类公开的方法的参数。这些对象都包含简单的字符串/数字属性,因此封送相对无痛。

我们现在需要传递一个包含其他对象列表的对象。如果我在VB6中对此进行编码,我可能会有一个包含集合作为成员变量的类。在C#中,我可能有一个带有List成员变量的类。

是否可以构建一个C#类,使VB6应用程序可以填充此内部列表并成功编组?我在这里没有很多经验,但我想我必须使用一个Object类型数组。

1 个答案:

答案 0 :(得分:2)

COM中的选项比C#中的选项更受限制:

  • 您不能使用泛型(COM不支持此功能,TLBEXP会将其排除在外)

  • 有旧的ArrayList类。或者数组。

  • COM互操作层将自动为实现IEnumerable(非泛型版本)的C#类生成COM枚举器,您可以使用For Each在VB6端迭代它。

  • 类似地,它为实现COM枚举器的COM类生成IEnumerable。您可以在C#代码中使用foreach来枚举VB6 Collection。根据谁创建集合,在它们之间进行选择。