2009-05-04 7 views
4

Compte tenu d'une expression lambda:Comment obtenir la valeur d'un Lambda MemberExpression

Define(Expression<Func<T, int>> property) 

et utilisé comme:

Define(x => x.Collection.Count) 

Quelle est la meilleure méthode pour obtenir la valeur du comte? Y at-il un moyen facile avec l'arbre d'expression ou devrais-je utiliser la réflexion pour analyser l'arbre pour obtenir le PropertyInfo et GetValue()?

Répondre

4

Vous pouvez utiliser ce qui suit pour obtenir un délégué correspondant à votre lambda:

var propDelegate = property.Compile(); 
var count = propDelegate(...); 

propDelegate sera un Func<T, int>, et vous pouvez l'appeler en passant dans l'objet requis pour le type T.

+0

Merci Denis, ça a marché. Code de travail donné l'exemple original: var propDelegate = property.Compile(); var count = propDelegate.DynamicInvoke (nouvel objet [] {instance}); – TechnoAg

+3

où est l'instance de: s? – Rookian

Questions connexes