如何在VBA中实现自定义可迭代类



我想给我的类添加一个功能,这样我就可以在每个循环中使用它们。

我编写了哈希图、数组列表、队列、集合等等,我想对它们进行迭代。现在我正在寻找一种实现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对象枚举器。

相关内容

  • 没有找到相关文章

最新更新