是否有可能使纯粹在VBScript中实现的自定义容器类(没有COM对象)与For Each语句一起使用?如果是这样,我必须暴露什么方法?
简而言之,没有
为什么?创建一个可枚举的集合类来获得类似的东西
Class CTest
....
End Class
Dim oTest, mElement
Set oTest = New CTest
....
For Each mElement In oTest
....
Next
Run Code Online (Sandbox Code Playgroud)
班级必须遵循一些规则.我们需要透露这个类
一个名为的公共只读属性 Count
一个名为的公共默认方法 Item
一个名为的public readonly属性_NewEnum,它应该返回一个实现
IUnknown接口的对象的IEnumVARIANT接口,并且必须具有hidden属性和dispatch ID为-4
根据此列表或要求,VBScript不包含任何指示属性的调度ID或隐藏属性的方法.
所以,这不可能做到
枚举存储在容器类中的元素的唯一方法是使用返回的属性(或方法)
一个支持所有指定要求的对象,通常是用于保存元素的相同对象(快速,但会暴露太多信息)
一个数组(在VBScript数组中可以枚举)保存对容器中每个元素的引用(如果需要在调用时生成数组,但不返回任何非必需信息,则会很慢)
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |