一段时间以来,我一直想知道是否可以枚举、设置和索引对象或结构的属性。
我目前有一组用于不同报告的自定义图形生成器类,但它们都接受相同的结构作为参数。
结构的属性值是从SQL读取器设置的,SQL读取器读取在数据库表中设置的列。现在,理想情况下,希望按顺序遍历这些列值,并将它们写入结构的属性。
我的结构如下:
Public Structure MyStructure
    Dim GraphName As String
    Dim GraphValue As Integer
    Dim Red As Integer
    Dim Green As Integer
    Dim Blue As Integer
End Structure现在,我希望能够遍历这些属性并为每个属性赋值。例如:
 Dim Struct as MyStructure
 For i as integer = 0 to 4
      Struct.i = "A value retrieved from database"
 Next i主要的想法是,我想避免使用case语句:
 Dim Struct as MyStruct
 For i as integer = 0 to 4
      Select Case i
          Case 0
          Struct.GraphName  = "A value retrieved from database"
          Case 1
          Struct.GraphValue = "A value retrieved from database"
          'Etc.
      End Select
 Next i任何关于这方面的见解都将不胜感激。
发布于 2012-12-12 16:51:55
要“动态”访问这些字段,您可以使用反射:
Private Structure foo
    Public i As Integer
    Public s As String
End Structure
Private Sub bar()
    Dim f As foo
    Dim fields = GetType(foo).GetFields(BindingFlags.Public Or BindingFlags.Instance)
    For Each fi As FieldInfo In fields
        fi.SetValue(f, GetValueFromDBForName(fi.Name))
    Next
End Sub请注意,反射并不快。"FasterFlect“(通过NuGet)或其他”快速“替代可能是一种选择。或者您考虑使用ORM (对象关系映射)“开箱即用”
https://stackoverflow.com/questions/13835633
复制相似问题