变量类成员赋值

时间:2013-06-10 21:59:05

标签: vb.net list class enumeration

我在vb.net工作,我想知道是否有任何方法可以使用变量字符串进行类的成员赋值。要比较的字段由整数值表示,并基于枚举我想比较该整数表示的字段。例如,这是我想要完成的基本想法。

Public Class Point
   Public X As Double
   Public Y As Double
   Public Z As Double
End Class


Public Enum PointEnum As Short
   X = 0
   Y = 1
   Z = 2
End Enum

使用Points列表,我希望能够比较x,y或z,具体取决于传入程序的'enumValue'。

Dim PointList As New List(Of Point)
If PointList(0).[Enum].GetName(GetType(PointEnum), enumValue) < someValue Then
   ...
End If

PointList(0).[Enum].GetName(GetType(PointEnum), enumValue)是我遇到麻烦的行..如果我的实际代码与x,y和z一样简单,我只会使用select case或if语句,不过我上课使用超过30个属性。提前感谢任何建议或解决方案

1 个答案:

答案 0 :(得分:1)

如果所有类中的所有字段都是 PUBLIC ,那么您可以使用旧的CallByName()函数,这样可以很容易地编写/读取:

    Dim PointList As New List(Of Point)
    PointList.Add(New Point() With {.X = 1.0, .Y = 2.0, .Z = 3.0})
    PointList.Add(New Point() With {.X = 3.0, .Y = 6.0, .Z = 9.0})
    PointList.Add(New Point() With {.X = 4.0, .Y = 8.0, .Z = 12.0})

    Dim enumValue As PointEnum = PointEnum.Z
    Dim someValue As Double = 5

    If CallByName(PointList(0), enumValue.ToString, CallType.Get) < someValue Then
        Debug.Print("Less Than")
    Else
        Debug.Print("Not Less Than")
    End If

如果你真的想使用Reflection,或者字段不是Public,那么我有一个类似的例子here