【发布时间】:2013-12-10 06:54:55
【问题描述】:
我想在我的类中添加一个特性,这样我就可以在 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 接口,但我没有找到任何关于如何做到这一点的参考。
我在 Java、C++、C# 等方面拥有丰富的经验,因此我认为即使在 VBA 中也必须有一种方法来实现它,甚至可能使用 API 调用之类的东西。
【问题讨论】:
-
this 是相关的。有关其他参考资料的链接,请参见 cmets 部分。很抱歉,我不明白您实际上要实施什么?
-
是的,他们是真实的。但没有什么是我不知道的。他们都从他们正在使用的 Collections 类中获得 IUnknown 迭代器。我想更进一步,而不是在我的代码中使用 Collection,我想编写自己的“迭代器”(java 语言)。因此,我不想使用“Set NewEnum = objPeople.[_NewEnum]”,而是希望能够编写“Set NewEnum = new MyIterator: NewEnum.init(Me)”来创建一个迭代器/枚举,这样我就可以在我的类上使用 foreach ( ArrayLists, HashMaps ets) 无需使用 Collection。
标签: excel class vba foreach iunknown