La idea de este articulo es poder recorrer todas las propiedades de una clase para obtener su nombre, su tipo y su valor. Para ello utilizaremos System.Reflection
var prop = oj.GetType().GetProperties();
foreach (var props in prop)
{
nombre = props.Name
tipo = props.PropertyType.Name
valor = props.GetValue(oj, null)
}
Esto es muy útil ,por ejemplo, para hacer un método de persistencia o una serializacion para esta clase. Así podemos montar una lista de parámetros para un procedimiento almacenado o crear un XML desde esta.
También podemos crear unos atributos personalizados para poder hacer marcadores de esta manera:
public class MiAtributo : Attribute{ }
Y marcar las propiedades de la clase así:
[MiAtributo]
public string A { get; set; }
Añadiendo el siguiente using en el archivo de la clase:
using System.ComponentModel.DataAnnotations;
Así podemos tratar de manera diferente las propiedades mediante una variable para consultar si tiene o no la propiedad mi atributo:
public static bool tieneMiAtributo(PropertyInfo prop)
{
object[] attrs = prop.GetCustomAttributes(true);
foreach (object attr in attrs)
{
tieneMiAtributo customAttr = attr as MiAtributo;
if (customAttr != null)
{
return false;
}
}
return true;
}
}
Comentarios recientes