Tips.cl

Tag: reflection

Acceder a una propiedad dinámicamente

by abraham on Jun.05, 2009, under C#

Constantemente se nos ha ocurrido construir una aplicación dinámica que acceda a las propiedades de un objeto de manera tal que no sea necesario conocer de antemano el nombre de estas.

La solución en .NET es reflection, parte del class library del framework 2.0 que nos permite acceder a estas, además de otras cosas, como actualizar los valores de los miembros de las clases como propiedades, variables públicas (fields), obtener los constructores, etc..

vasta con hacer el siguiente import:
using System.Reflection;
y ya tenemos disponible mediante <objeto>.getType() un conjunto de propiedades y métodos para acceder.

Ejemplo:

public class Foo {
private string var;

public string Var {
get {
return var;
} set {
var= value;

}
}
}

Usado System.Reflection podemos acceder a la propiedad Var de la clase Foo de la siguiente forma:

Foo myObjeto = new Foo();
string value = (string)myObjeto .GetType().InvokeMember(”Var“, BindingFlags.GetProperty,     null,myObjeto, new object[] { });

Donde  “Var” es la propiedad accedida dinámicamente, BindingFlags.GetProperty es la acción que se está realizando, en este caso Obtener Propiedad (hay para otros miembros y asignaciones)

Hay otras formas más cortas pero menos dinámicas por ejemplo:

string value = myObjeto .GetType().GetProperty(“Var”).GetValue(myObjeto , new object[] { })

Si se fijan “Var” está entre comillas lo que significa que puede ser cualquier string, una constante, variable o una key en el archivo de configuración.

6 Comentarios :, , más...

Buscas algun tips?

Busca aquí:

contactate con nosotos contacto@tips.cl

Visita nuestras Web amigas!

Web Amigas...