是否可以使纯粹在VBScript中实现的自定义容器类(没有COM对象)与For Each语句一起使用?如果是这样,我必须公开哪些方法?
答案 0 :(得分:7)
简而言之,没有
为什么呢?创建一个可枚举的集合类来获得类似
的东西Class CTest
....
End Class
Dim oTest, mElement
Set oTest = New CTest
....
For Each mElement In oTest
....
Next
班必须遵循一些规则。我们需要这个类来公开
名为Count
名为Item
名为_NewEnum
的公共只读属性,应返回
IUnknown
实现IEnumVARIANT
接口的对象的接口,必须具有隐藏属性且发送ID为-4
根据此列表或要求,VBScript不包含任何指示属性的调度ID或隐藏属性的方法。
所以,这不可能做到
枚举存储在容器类中的元素的唯一方法是使用返回的属性(或方法)
支持所有指定要求的对象,通常是用于保存元素的相同对象(快速,但会暴露太多信息)
一个数组(在VBScript数组中可以枚举)保存对容器中每个元素的引用(如果需要在调用时生成数组,但不返回任何非必需信息,则缓慢)