[VB]PropertyInfo使用於設定/取得物件屬性內容

  • 7244
  • 0

摘要:[VB]PropertyInfo使用於設定/取得物件屬性內容

在某些情況下,我們需要用程式來run變數的內容,例如說使用個for-loop來輸出變數內容,或著將一些資料mapping進某個變數,當然啦,可以個別指定變數屬性所指定值,但如果透過一些固定的邏輯就可以完成的話,那就很棒了。

假設我有一個變數如下

Public Class MyData
    Private _data1 As String
    Public Property Data1() As String
        Get
            Return _data1
        End Get
        Set(ByVal value As String)
            _data1 = value
        End Set
    End Property

    Private _data2 As String
    Public Property Data2() As String
        Get
            Return _data2
        End Get
        Set(ByVal value As String)
            _data2 = value
        End Set
    End Property
End Class

然後底下範例如何透過變數名稱指定變數內容

Dim testdata As New MyData()
        testdata.Data1 = "nothing"
        testdata.Data2 = "haveSomething"
        Dim pi As PropertyInfo
        pi = testdata.GetType().GetProperty("Data1")
        pi.SetValue(testdata, "abc", Nothing) '將內容設定為abc
        For Each tp In testdata.GetType().GetProperties()  '輸出內容明細
            pi = tp
            Debug.WriteLine(String.Format("MyData.{0} = {1}", pi.Name, pi.GetValue(testdata, Nothing)))
        Next

結果輸出為:

MyData.Data1 = abc
MyData.Data2 = haveSomething