0

我有一组模块,例如 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,我一直无法找到以类似方式处理模块的技术。如果这些模块的地址指针存储在一个数组中,我应该能够遍历它们。

我将不胜感激任何建议。谢谢你。

4

1 回答 1

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

或者,您可以将 col 设置为对象数组。

Dim col() as Object = {One, Two, Three}

理想情况下,您会避免使用 Object,而是所有模块都将使用继承将类似的方法组合在一起。它们而不是 Object,您可以使用 ParentObject 来保持类似的功能,而不是一直进行强制转换。

这像泥一样清澈吗?

史蒂夫

于 2013-07-10T19:41:51.580 回答