0

itemOne、itemTwo、...、itemTen などの一連のモジュールがあり、これらのモジュールには類似のメソッドとサブクラスが含まれています。「デリゲート」と「列挙型」を使用してこれらのメソッドを追跡し、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

文字列の配列を使用し、実行時にコードとして実行する方法があれば役立ちます。のようなもの -- Call String2Code("ItemOne").Something.SomeMethod()、ここで SomeMethod はサブルーチンです。

必ずしも String2Code 型の実装である必要はありません。一般に、「モジュールへのデリゲート」の配列を追跡する方法を探しています。もちろん、「デリゲート」は VB のサブ/関数に対してのみ機能し、同様の方法でモジュールを処理する手法を見つけることができませんでした。これらのモジュールのアドレス ポインターが配列に格納されている場合、それらをループ処理できるはずです。

アドバイスをいただければ幸いです。ありがとうございました。

4

1 に答える 1

0

振り返ってみると、これはもっと簡単かもしれません。私の意見では、モジュールではなくクラスにする必要があります...

以下では、さまざまなタイプのオブジェクトを表すために One、Two、Three を使用していることに注意してください。

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 の使用を避け、代わりにすべてのモジュールが継承を使用して同様のメソッドをグループ化します。オブジェクトの代わりに、常にキャストするのではなく、同様の機能を維持する ParentObject を使用できます。

これは泥のように透明ですか?

スティーブ

于 2013-07-10T19:41:51.580 に答える