摘要:[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