Оценить выражение

Итак, у меня есть объект с некоторыми свойствами, например: Dim.d1, Dim.d2,...,Dim.d50которые возвращают строки. Например: Dim.d1="Description A", Dim.d2="Description B",etc,

То, что я хочу сделать, это приписать эти описания заголовкам Gridview, и для этого я подумал об использовании индексов, таких как этот псевдокод:

for i=0 until 49
e.Row.Cells[i].Text = Evaluate(Dim.d(i+1))

Так что, в принципе, мне нужен способ изменить вызов свойств моего объекта в зависимости от индекса, но я не знаю, возможно ли это. когда index i=0, вызов Dim.d1, когда index i=1 вызов Dim.d2и так до 50.

Есть идеи?

3 ответа

Решение

Вы можете использовать методы в System.Reflection Пространство имен, чтобы сделать это. Тем не менее, ответ представлен для того, чтобы ответить на вопрос - вы должны посмотреть на использование некоторых вариантов, предложенных другими ответчиками, например, использовать List(Of String) или что-то подобное.

В любом случае, допустим, у вас есть класс:

Public Class Class1
    Public Property d1 As String
    Public Property d2 As String
    Public Property d3 As String

End Class

А затем, скажем, вы создаете экземпляр этого класса и устанавливаете его свойства:

Dim obj As New Class1
obj.d1 = "Foo"
obj.d2 = "Bar"
obj.d3 = "Test"

Если вы хотите получить цикл от 1 до 3 и получить доступ, например, к d1, d2, d2 и т. д. тогда это где вы используете Reflection:

For i As Integer = 1 To 3
    Dim info As System.Reflection.PropertyInfo = obj.GetType().GetProperty("d" & i)
    Dim val As String = info.GetValue(obj, Reflection.BindingFlags.GetProperty, Nothing, Nothing, Nothing)
    Debug.Print(val.ToString)
Next

Даст вам вывод:

Foo
Bar
Test

Для этого нужны массивы или списки!

var dim = new string[50];
dim[0] = "Description A";
dim[1] = "Description B";
..// etc

for(var i=0;i<49;i++)
{
    e.Row.Cells[i].Text = dim[i];
}

Как Jamiec уже опубликовал, используйте массив или список. Откуда у вас описание ярлыков?

Если у вас есть описания в строке через запятую, вот код vb.net:

dim descriptions as String = "Description A,Description B,Description C"
dim myArray as String() = descriptions.Split(cchar(","))

for i as Integer = 1 To myArray.Length
    e.Row.Cells(i-1).Text = myArray(i)
Next
Другие вопросы по тегам