Developer's Diary

1 abril, 2014

.NET Reflection – Recorriendo propiedades de una clase I

Filed under: .net, API, ASP.Net, Awesome, Curso C# — Etiquetas: , , , , — jnavero @ 11:47 PM

En esta ocasión voy a hablar de reflection en .NET. Ese amigo nuestro con el que se pueden hacer infinidad de cosas.

¿Qué es reflection?

Pues ni mas ni menos que una forma de poder sacar los metadatos (por así decirlo) de una clase dentro de un assembly.

¿Por que este post?

Pues básicamente, cuando se busca por internet como recorrer las propiedades de una clase siempre suelen poner propiedades de tipo string o int32 y hacen que esto parezca muy sencillo. Pero, ¿y si nuestra propiedad es una lista de una clase que hemos creado? pues aquí la cosa se complica un poco aunque quiero mostrar que eso no es tan complicado como en una primera instancia parece.

En este post haré algunos ejemplos de mas sencillo a mas complejo, recorriendo las propiedades de una clase. En un segundo post, sobre reflection, lanzaré una aplicación de forma dinámica cargada en memoria.

Si miramos el espacio de nombre System.Reflection veremos que hay infinidad de clases, propiedades, y métodos.

Comienzo con el ejemplo mas sencillo y lo que siempre aparece en internet cuando se busca información sobre reflection:

Imports System.Reflection
Public Class Clase1
Public Property Nombre As String
Public Property Apellidos As String

End Class

Public Class Ppal
Public Sub Funcion()
Dim clase As New Clase1
clase.Apellidos = "Prueba Apellido"
clase.Nombre = "Prueba Nombre"

For Each propiedad As PropertyInfo In clase.GetType.GetProperties()
Dim tipoPropiedad As String = propiedad.PropertyType.Name
Dim NombrePropiedad As String = propiedad.Name
Dim valorPropiead As String = propiedad.GetValue(clase)
Next
End Sub

End Class

Breve Explicación del ejemplo:

Creo que este es el ejemplo mas sencillo y mas extendido en internet

Con Gettype sacamos el tipo y podemos acceder a las clases que acceden a los metadatos.

Por ejemplo con GetProperty podemos obtener una propiedad concreta y retorna un PropertyInfo . Este PropertyInfo contiene toda la información necesaria sobre una propiedad.

Si utilizamos GetProperties obtenemos una colección de PropertyInfo  que podemos recorrer fácilmente con un for each.

Con PropertyType y la propiedad Name podemos obtener el tipo y el nombre de la propiedad, aunque podemos obtener mucha mas información.

Por ultimo con GetValue podemos obtener el valor de la propiedad

En el siguiente post, veremos como recorrer las propiedades mas complejas.

Hasta el próximo.

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

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

A %d blogueros les gusta esto: