Я впервые врывался в Отражение, и я действительно застрял. Я искал все, что мог придумать. Я на 90%, где я хочу быть сейчас.PropertyInfo.GetValue() «Объект не соответствует типу цели».
Я пытаюсь вернуть значение свойства в пользовательский класс через Reflection.
Вот мой класс декларации:
Public Class Class2
Private newPropertyValue2 As String
Public Property NewProperty2() As String
Get
Return newPropertyValue2
End Get
Set(ByVal value As String)
newPropertyValue2 = value
End Set
End Property
End Class
класс я написал, чтобы посмотреть на класс через отражение выглядит следующим образом:
Public Class ObjectCompare
Private _OriginalObject As PropertyInfo()
Public Property OriginalObject() As PropertyInfo()
Get
Return _OriginalObject
End Get
Set(ByVal value As PropertyInfo())
_OriginalObject = value
End Set
End Property
Public Sub CompareObjects()
Dim property_value As Object
For i As Integer = 0 To OriginalObject.Length - 1
If OriginalObject(i).GetIndexParameters().Length = 0 Then
Dim propInfo As PropertyInfo = OriginalObject(i)
Try
property_value = propInfo.GetValue(Me, Nothing)
Catch ex As TargetException
End Try
End If
Next
End Sub
End Class
я поставил точку останова на property_value = propInfo. GetValue (Me, Nothing), чтобы увидеть результат.
Вот как я называю мой код:
Dim test As New Class2
test.NewProperty2 = "2"
Dim go As New ObjectCompare
Dim propInf As PropertyInfo()
propInf = test.GetType.GetProperties()
go.OriginalObject = propInf
go.CompareObjects()
Через размышлении я могу увидеть ИмениСвойства и типа, все, что мне нужно, это значение недвижимости! Теперь, когда я добираюсь до точки останова, я получаю TargetException и сообщение об ошибке говорит: «Объект не соответствует типу цели». Его сейчас 1 утра по утрам, и я потерпел крушение, теперь любая помощь будет оценена по достоинству. Я искал MSDN и Google до смерти, а затем в последний раз для удовольствия;)
Я только что проснулся и получил это, и он работает как шарм! Я думал, что первый параметр метода GetValue ссылается на тот объект PropertyInfo, из которого вы хотите получить значение. Еще раз спасибо! – StevenMcD 2008-11-22 07:49:17