评估表达
Evaluate expression
因此,我有一个具有某些属性的 object,如下所示:Dim.d1, Dim.d2,...,Dim.d50
return 个字符串。例如:Dim.d1="Description A", Dim.d2="Description B",etc
.
我想做的是将这些描述归因于 Gridview 的 headers,为此我正在考虑使用索引,就像这样的伪代码:
for i=0 until 49
e.Row.Cells[i].Text = Evaluate(Dim.d(i+1))
所以,基本上,我需要一种方法来根据索引更改对 object 属性的调用,但我不知道这是否可行。当index i=0
时,调用Dim.d1
,当index i=1
调用Dim.d2
,以此类推,直到50.
有什么想法吗?
这就是数组或列表的用途!
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
您可以使用 System.Reflection
命名空间中的方法来执行此操作。但是,给出答案是为了回答问题 - 您应该考虑使用其他回答者建议的一些选项,例如使用 List(Of String)
或类似的东西。
无论如何,假设你有一个 class:
Public Class Class1
Public Property d1 As String
Public Property d2 As String
Public Property d3 As String
End Class
然后,假设您创建了 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
因此,我有一个具有某些属性的 object,如下所示:Dim.d1, Dim.d2,...,Dim.d50
return 个字符串。例如:Dim.d1="Description A", Dim.d2="Description B",etc
.
我想做的是将这些描述归因于 Gridview 的 headers,为此我正在考虑使用索引,就像这样的伪代码:
for i=0 until 49
e.Row.Cells[i].Text = Evaluate(Dim.d(i+1))
所以,基本上,我需要一种方法来根据索引更改对 object 属性的调用,但我不知道这是否可行。当index i=0
时,调用Dim.d1
,当index i=1
调用Dim.d2
,以此类推,直到50.
有什么想法吗?
这就是数组或列表的用途!
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
您可以使用 System.Reflection
命名空间中的方法来执行此操作。但是,给出答案是为了回答问题 - 您应该考虑使用其他回答者建议的一些选项,例如使用 List(Of String)
或类似的东西。
无论如何,假设你有一个 class:
Public Class Class1
Public Property d1 As String
Public Property d2 As String
Public Property d3 As String
End Class
然后,假设您创建了 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