我想向我的类(class)添加一个功能,以便可以在for-each循环中使用它们。

我写了要迭代的哈希图,数组列表,队列,集合等。
现在,我正在寻找一种实现IUnknown类的方法来构建自定义迭代器。

我已经知道怎么用

private objPeople as Collection
Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Attribute NewEnum.VB_MemberFlags = "40"
    Set NewEnum = objPeople.[_NewEnum]
End Property

但是所有这些示例都是基于Collection类的,我不想使用它。

我要重点关注的是尝试实现IUnknown接口(interface),但是我还没有找到有关如何执行此操作的引用。

我在Java,C++,C#等方面具有丰富的经验,因此我认为即使在VBA中,甚至在使用API​​调用之类的东西时,都必须有一种实现此目的的方法。

最佳答案

答案是可以做到的,但是很难看(requires和IDL,两个.BAS模块和两个.cls模块(其中一个是您的Collection Class模块)。
有关完整信息,请参见以下链接:

Create Your Own "Super Collections" in VB

祝你好运!对于我需要做的事情来说,它似乎很复杂,所以现在我只遍历Collection对象的枚举器。

10-06 09:33