我想向我的类(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对象的枚举器。