2011-01-19 20 views
5

Escribí un atributo de propiedad personalizado y lo configuré en un par de propiedades en mi clase. Ahora me gustaría durante el tiempo de ejecución obtener solo propiedades que tengan este atributo, ser capaz de obtener el valor de la propiedad, así como los valores de los campos de los atributos. ¿Podrías por favor ayudarme con esta tarea? gracias por la ayudaObtener todas las propiedades con los valores de reflexión

+0

Estoy bastante seguro de que este es un duplicado, pero no he encontrado un partido. Encontré el relacionado [Comprobar si la propiedad tiene atributo] (http://stackoverflow.com/questions/2051065/check-if-property-has-attribute) y [Encontrar los atributos en las propiedades de una instancia de una clase] (http://stackoverflow.com/questions/2999035/finding-the-attributes-on-the-properties-of-an-instance-of-a-class). –

Respuesta

13

Aquí hay un ejemplo:

void Main() 
{ 
    var myC = new C { Abc = "Hello!" }; 
    var t = typeof(C); 
    foreach (var prop in t.GetProperties()) 
    { 
     var attr = prop.GetCustomAttributes(typeof(StringLengthAttribute), true).Cast<StringLengthAttribute>().FirstOrDefault(); 
     if (attr != null) 
     { 
      var attrValue = attr.MaximumLength; // 100 
      var propertyValue = prop.GetValue(myC, null); // "Hello!" 
     } 
    } 
} 
class C 
{ 
    [StringLength(100)] 
    public string Abc {get;set;} 
} 
Cuestiones relacionadas