Asignar valor a una propiedad

17/01/2005 - 16:28 por Asier | Informe spam
Hola grupo,

Estoy usando reflection para asignar un valor a una propiedad de un DLL
externa. El código que uso es:

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button6.Click

Dim kk1 As [Assembly]

kk1 = [Assembly].LoadFrom("C:\Pruebas Reflection\dllAsier\bin\dllAsier.dll")

Dim t As Type = kk1.GetType("dllAsier.ClassHola")

Dim myProp As PropertyInfo = t.GetProperty("pEdad")

myProp.SetValue(t, "10", Nothing)

End Sub

y tengo en dllAsier.dll mi propiedad de la siguiente manera:

Public Class ClassHola

Public Property pEdad() As Integer

Get

Return m_pEdad

End Get

Set(ByVal Valor As Integer)

m_pEdad = Valor

End Set

End Property

End Class

A la propiedad accede bien (puedo leer sus atributos, etc), pero al
ejecutar la sentencia SetValue me da el error:

Excepción no controlada del tipo 'System.Reflection.TargetException' en
mscorlib.dll

Información adicional: El objeto no coincide con el tipo de destino.

¿que puede ser? gracias por vuestra ayuda

Asier
 

Leer las respuestas

#1 Pedro Luna Montalvo, MVP
17/01/2005 - 17:00 | Informe spam
myProp.SetValue(t, "10", Nothing)


El problema es que tu propiedad es Integer y le asignas un String.

Prueba con:
myProp.SetValue(t, 10, Nothing)

Como usas Reflection, estas a un nivel mas bajo y no hay conversiones
automaticas de tipos de dato.

Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu



"Asier" escribió en el mensaje
news:%23pWbdjK$
Hola grupo,

Estoy usando reflection para asignar un valor a una propiedad de un


DLL
externa. El código que uso es:

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button6.Click

Dim kk1 As [Assembly]

kk1 = [Assembly].LoadFrom("C:\Pruebas


Reflection\dllAsier\bin\dllAsier.dll")

Dim t As Type = kk1.GetType("dllAsier.ClassHola")

Dim myProp As PropertyInfo = t.GetProperty("pEdad")

myProp.SetValue(t, "10", Nothing)

End Sub

y tengo en dllAsier.dll mi propiedad de la siguiente manera:

Public Class ClassHola

Public Property pEdad() As Integer

Get

Return m_pEdad

End Get

Set(ByVal Valor As Integer)

m_pEdad = Valor

End Set

End Property

End Class

A la propiedad accede bien (puedo leer sus atributos, etc), pero al
ejecutar la sentencia SetValue me da el error:

Excepción no controlada del tipo 'System.Reflection.TargetException' en
mscorlib.dll

Información adicional: El objeto no coincide con el tipo de destino.

¿que puede ser? gracias por vuestra ayuda

Asier









Preguntas similares