Ich grabe zum ersten Mal in Reflection und ich bin wirklich fest. Ich habe alles gegooglet, was mir einfällt. Ich bin 90% wo ich jetzt sein möchte.PropertyInfo.GetValue() "Objekt stimmt nicht mit dem Zieltyp überein."
Ich versuche, den Wert einer Eigenschaft in einer benutzerdefinierten Klasse durch Reflektion zurückzugeben.
Hier ist meine Klassendeklaration:
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
Die Klasse ich geschrieben habe in der Klasse durch Reflexion zu sehen wie folgt aussieht:
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
ich auf der property_value = PROPINFO einen Haltepunkt setzen. GetValue (Me, Nothing), um zu sehen, was das Ergebnis ist.
Hier ist, wie ich meinen Code nennen:
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()
Durch Reflexion ich den Propertynamen und Typen sehen kann, alles was ich brauche ist der Wert der Immobilie! Wenn ich jetzt zum Haltepunkt komme, erhalte ich eine TargetException und die Fehlermeldung "Objekt stimmt nicht mit dem Zieltyp überein". Es ist jetzt 1 Uhr morgens und ich bin ruiniert, jede Hilfe würde jetzt geschätzt werden. Ich habe MSDN und Google in den Tod gesucht und dann auf der letzten Zeit für Spaß;)
Ich bin gerade aufgewacht und habe es gegeben und es funktioniert wie ein Zauber! Ich dachte, der erste Parameter der GetValue-Methode bezog sich auf das PropertyInfo-Objekt, von dem Sie einen Wert abrufen wollten. Danke noch einmal! – StevenMcD
+1 das funktionierte auch für mich. Mein Fall war anders; Ich habe propInfo.GetValue (It) verwendet, aber die Eigenschaftsinformationen wurden der falschen Klasse entnommen. Prost, Mann. – ashes999
+1 Ich hatte Probleme mit der GetValue-Methode. Ihre Erklärung, dass GetValue mit dem Objekt aufgerufen wurde, aus dem PropertyInfo erstellt wurde, war genau richtig! –