property from vb.net reflection propertyinfo

vb.net - get property value from object c#



PropertyInfo.GetValue() "El objeto no coincide con el tipo de destino". (2)

No estoy seguro de saber lo que intentas hacer aquí, pero lo intentaré.

Aquí está el código que he surgido:

Llamando :

Dim test As New Class2 test.NewProperty2 = "2" Dim go As New ObjectCompare go.CompareObjects(test)

Clase :

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

Compare :

Public Class ObjectCompare Public Sub CompareObjects(ByVal MyType As Object) For Each Prop In MyType.GetType().GetProperties() Dim value = Prop.GetValue(MyType, Nothing) Console.WriteLine(value) Next Console.ReadLine() End Sub End Class

Estoy cavando en Reflection por primera vez y estoy realmente atrapado. He buscado en Google todo lo que puedo pensar. Estoy 90% donde quiero estar ahora.

Estoy intentando devolver el valor de una propiedad en una clase personalizada a través de Reflection.

Aquí está mi declaración de clase:

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

La clase que escribí para mirar la clase a través de la reflexión se ve así:

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

Puse un punto de interrupción en la línea property_value = propInfo.GetValue (Me, Nothing) para ver cuál es el resultado.

Así es como llamo a mi código:

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()

A través de la reflexión puedo ver PropertyName y Type, ¡todo lo que necesito es el valor de la propiedad! Ahora cuando llego al punto de interrupción, obtengo una TargetException y el mensaje de error dice "El objeto no coincide con el tipo de objetivo". Ahora es la 1 AM de la mañana y estoy destrozado, cualquier ayuda en este momento sería apreciada. He buscado a MSDN y Google hasta la muerte y luego en la última vez por diversión;)


Me hace referencia al objeto ObjectCompare , que es diferente de la clase de la que se derivaron los objetos PropertyInfo ( Class2 ). También debe pasar un objeto del tipo del que recuperó los objetos PropertyInfo .

Public Sub CompareObjects(ByVal It as Object) 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(It, Nothing) Catch ex As TargetException End Try End If Next End Sub go.CompareObjects(test)