所以,我有一个带有一些属性的对象,如下所示: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。
有什么想法吗?
答案 0 :(得分:3)
这就是数组或列表的用途!
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];
}
答案 1 :(得分:1)
您可以使用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
答案 2 :(得分:0)
像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