8

我想在我的类中添加一个特性,这样我就可以在 for-each 循环中使用它们。

我写了我想要迭代的 hashmaps、arraylists、队列、集合等等。现在我正在寻找一种方法来实现 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 调用之类的东西。

4

2 回答 2

8

总而言之,您无法实现 IUnknownCollection也是如此。它们都是无法在 VBA 中扩展的 Com 对象。不过,您可以创建自定义集合并做其他非常酷的可迭代事情

于 2014-08-27T01:12:46.090 回答
6

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

在 VB 中创建自己的“超级集合”

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

于 2018-09-23T14:20:32.823 回答