我想给我的类添加一个功能,这样我就可以在每个循环中使用它们。
我编写了哈希图、数组列表、队列、集合等等,我想对它们进行迭代。现在我正在寻找一种实现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接口,但我还没有找到任何关于如何实现的参考资料。
我在Java、C++、C#等方面有着丰富的经验,所以我认为即使在VBA中,甚至在API调用之类的东西中,也必须有一种方法来实现这一点。
长话短说就是你不能实现IUnknown。Collection也是如此。它们都是不能在VBA中进行扩展的Com对象。不过,您可以创建自定义集合并做其他非常酷的可迭代的事情。
答案是可以做到,但很难看(需要和IDL
、两个.BAS
模块和两个.cls
模块(其中一个是Collection class模块)。有关完整信息,请参阅此链接:
在VB 中创建自己的"超级收藏"
祝你好运!对于我需要做的事情来说,这似乎很复杂,所以现在我只遍历Collection对象枚举器。