2

私は基本的に、ASP.Net コントロールの一部 (例DropDownList) が使用するロジックの一部を実装しようとしています。これは、ユーザーが指定したプロパティを呼び出すことによって繰り返され、各行が消費される汎用データ ソースを受け入れるために使用されます。

これはVB.Netにあります。例は次のとおりです。

Dim myObject As Object = getUnknownObject()
Dim propertyName As String = getUnknownPropertyNameForObject()

'Now given that myObject is an array of objects which possess the property given by propertyName '

For Each i As Object In myObject
   Dim valueOfProperty As String = invokePropertyOfObject(myObject, propertyName)
   'Do something with value'
Next i

invokePropertyOfObjectプロパティの値を返す実装を探しています。動的プロパティがループで呼び出されるという事実に注意したいので、この方法でリフレクションを使用するとパフォーマンスの問題が発生する可能性があります。

私がやろうとしていることの理想的な方法を知っている人はいますか? 可能であれば、動的プロパティのルックアップを 1 回だけ実行し、ループ中に繰り返し使用する方法が必要です。オブジェクトは不明ですが、配列内の各オブジェクトは同じタイプであることを念頭に置いて、これを行うことは可能ですか。

4

2 に答える 2

2

ループの前に配列の型の PropertyInfo オブジェクトをフェッチしてから、配列内の各要素に対して propertyInfo.GetValue() メソッドを使用できます。そうすれば、プロパティを 1 回だけ見つけることができますが、各レコードの値を取得できます。

于 2013-01-24T12:54:09.190 に答える
1

実際、myObject.Property()他に選択肢がない場合は直接使用できます。プロパティを使用するには、オブジェクトを正しいタイプに変換するのが最適です。

これはあなたの他のオプションです:

Dim value as String = CallByName(myObject, propertyName, CallType.Get)
于 2013-01-24T12:25:38.153 に答える