我有一组模块,例如itemOne,itemTwo,...,itemTen,它们本身具有类似的方法和子类。我使用“Delegate”和“Enum”来跟踪这些方法,并有一个系统的方法在for循环中调用它们。但是,我不知道如何制作模块的集合或数组,目的是能够遍历它们。
以下结束目标,伪代码
For Num = One to Ten
With item<Num> % This could be itemOne, or itemTwo, etc. I do NOT know how to do this
% Call function with the help of for loops. I know how to do this
End With
End For
如果有一种方法可以使用字符串数组,并在运行时将它们作为代码执行,那将会有所帮助。类似的东西 - 调用String2Code(“ItemOne”)。Something.SomeMethod(),其中SomeMethod是一个子程序。
它不一定必须是String2Code类型的实现。一般来说,我正在寻找一种方法来跟踪一系列“代表模块”。当然,“Delegate”仅适用于VB中的Sub / Function,我一直无法找到以类似方式处理模块的技术。如果这些模块的地址指针存储在一个数组中,我应该可以遍历它们。
我将不胜感激任何建议。谢谢。
答案 0 :(得分:0)
回想起来,这可能更简单。在我看来,你应该让他们成为课程而不是模块...
请注意,我使用下面的一个,两个和三个来表示不同类型的对象。
Dim col as List(Of Object)
col.add(One)
col.add(Two)
col.add(Three)
For i as integer = 0 to col.Count -1
If typeof col(i) is [ModuleType1] Then
CTYPE(col(i), ModuleType1).SubClass.Method()
Else If TypeOf col(i) is ModuleType2 Then
CTYPE(col(i), ModuleType2.SubClass2.Method2()
End If
Next
或者,您可以只创建一个对象数组。
Dim col() as Object = {One, Two, Three}
理想情况下,您会避免使用Object,而是所有模块都会使用继承将类似方法组合在一起。它们可以使用ParentObject而不是Object来保持类似的功能,而不是一直使用它。
这显然是泥吗?
史蒂夫