Llamada dinámica a un método o a un atributo de una clase

A veces puede ser necesario llamar a un método u obtener el valor de un atributo de una clase de manera dinámica. Pongamos que en un BBDD o en un fichero .ini se nos indica qué método llamar o qué atributo obtener.

En .NET esto se puede hacer mediante “Reflexion” (System.Reflexion). Este namespace ofrece clases que nos permiten bucear y manipular las clases y assemblies.

Personalmente lo he usado en un proyecto: En un formulario el usuario indica el nombre del campo que quiere ver al generar un Excel, de momento puede escoger entre el plazo o el importe de la oferta. La clase oferta se carga con todos los datos y luego usamos “Reflexion” para utilizar el que el usuario ha escogido:

Private Function ObetenValor(ByRef c As Oferta, ByVal campo As String) As Object

Dim t As Type = GetType(Oferta)
Dim result As Object

result = t.InvokeMember(campo, _
BindingFlags.GetField Or BindingFlags.GetProperty, _
Nothing, _
c, _
New Object() {})

Return result

End Function

Esta función os devuelve el valor de la propiedad de la clase Oferta que le indiquéis en el parámetro “campo”.

Saludos

Anuncios

Acerca de vcarazo

PMP, IT Project Manager
Esta entrada fue publicada en .NET, Desarrollo. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s