如何让我的自定义 class 与 For Each 兼容?
How do I make my custom class compatible with For Each?
是否可以使完全在 VBScript(无 COM 对象)中实现的自定义容器 class 与 For Each 语句一起使用?如果是这样,我必须公开哪些方法?
总之,没有
为什么?创建一个可枚举的集合 class 以获得类似
的东西
Class CTest
....
End Class
Dim oTest, mElement
Set oTest = New CTest
....
For Each mElement In oTest
....
Next
class 必须遵守一些规则。我们需要 class 来公开
A public 只读 属性 调用 Count
一个 public 默认方法调用 Item
A public 只读 属性 调用了 _NewEnum
,应该 return 和
IUnknown
实现 IEnumVARIANT
接口的对象的接口,并且 必须具有隐藏属性和 -4
[=47 的调度 ID =]
从这个列表或要求来看,VBScript 不包括任何方式来指示 属性 的调度 ID 或隐藏属性。
所以,这是做不到的
枚举存储在容器 class 中的元素的唯一方法是使用 属性(或方法)returns
支持所有指定要求的对象,通常是用来保存元素的同一个对象(速度快,但会暴露太多信息)
一个数组(在 VBScript 中可以枚举数组)保存对容器中每个元素的引用(如果数组需要在调用时生成,但不会return任何非必需信息)
是否可以使完全在 VBScript(无 COM 对象)中实现的自定义容器 class 与 For Each 语句一起使用?如果是这样,我必须公开哪些方法?
总之,没有
为什么?创建一个可枚举的集合 class 以获得类似
的东西Class CTest
....
End Class
Dim oTest, mElement
Set oTest = New CTest
....
For Each mElement In oTest
....
Next
class 必须遵守一些规则。我们需要 class 来公开
A public 只读 属性 调用
Count
一个 public 默认方法调用
Item
A public 只读 属性 调用了
[=47 的调度 ID =]_NewEnum
,应该 return 和
IUnknown
实现IEnumVARIANT
接口的对象的接口,并且 必须具有隐藏属性和 -4
从这个列表或要求来看,VBScript 不包括任何方式来指示 属性 的调度 ID 或隐藏属性。
所以,这是做不到的
枚举存储在容器 class 中的元素的唯一方法是使用 属性(或方法)returns
支持所有指定要求的对象,通常是用来保存元素的同一个对象(速度快,但会暴露太多信息)
一个数组(在 VBScript 中可以枚举数组)保存对容器中每个元素的引用(如果数组需要在调用时生成,但不会return任何非必需信息)