[英]How to enumerat or index the properties of a structure
一段时间以来,我一直在想是否可以枚举,设置或索引对象或结构的属性。
我目前有一组用于不同报告的自定义图形生成器类,但是它们都接受相同的结构作为参数。
从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
任何对此的见解将不胜感激。
要“动态”访问字段,可以使用反射:
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(对象关系映射)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.