2010-04-28 5 views
2

Existe-t-il un moyen simple d'obtenir l'PropertyInfo d'une propriété dans un délégué, en supposant qu'il s'agit d'un simple sélecteur de propriétés?PropertyInfo from Delegate

Exemple:

var propertyInfo = Method<MyClass,int>(s => s.Property); 

... 

PropertyInfo Method(Func<T1,T2> selector) 
{ 
    // What goes here? 
} 

Répondre

8

En utilisant l'expression, vous pouvez:

static PropertyInfo ExtractProperty<T>(Expression<Func<T>> selector) 
    { 
     return (selector.Body as MemberExpression).Member as PropertyInfo; 
    } 
+0

yup, doit être un arbre d'expression et non un délégué –

+0

j'avais même pas considéré cela, merci! – Paul