2012-04-19 10 views
11

te pido pregunta similar here , asumir este tipo:Obtener tipo de propiedad por MemberExpression

public class Product { 

public string Name { get; set; } 
public string Title { get; set; } 
public string Category { get; set; } 
public bool IsAllowed { get; set; } 

} 

y éste que utilizan MemberExpression:

lo uso como esto:

HelperClass<Product>.Property(p => p.IsAllowed); 

en HelperClass Solo necesito el nombre de la propiedad (en este ejemplo IsAllowed) y el tipo de propiedad (en este ejemplo Boolean) Así puedo obtener el nombre de la propiedad pero no puedo obtener el tipo de propiedad. Veo el tipo de propiedad en la depuración como cuadro siguiente muestra:

enter image description here

Entonces, ¿cuál es su sugerencia para conseguir tipo de propiedad?

Respuesta

22

intenta transmitir body.Member a un PropertyInfo

public class HelperClass<T> 
{ 
    public static void Property<TProp>(Expression<Func<T, TProp>> expression) 
    { 
     var body = expression.Body as MemberExpression; 

     if (body == null) 
     { 
      throw new ArgumentException("'expression' should be a member expression"); 
     } 

     var propertyInfo = (PropertyInfo)body.Member; 

     var propertyType = propertyInfo.PropertyType; 
     var propertyName = propertyInfo.Name; 
    } 
} 
Cuestiones relacionadas