Comment tirer profit d'une expression lambda?

.net c# expression-trees lambda

Question

J'ai cette classe:

public class CustomerFilter
{
    public int Id { get; set; }
    public int Name { get; set; }
}

Et c'est utilisé comme ça:

public class CustomerFilter
{
    public int Id { get; set; }
    public int Name { get; set; }
}

À partir de la classe de recherche, comment puis-je obtenir la valeur d'une propriété sans utiliser ExpressionVisitor ? Quelque chose comme:

public class CustomerFilter
{
    public int Id { get; set; }
    public int Name { get; set; }
}

Réponse populaire

Si votre CustomerFilter ne prend en charge que MemberExpression==ConstantExpression comme dans votre exemple de code. Ensuite, vous pouvez obtenir les informations directement à partir de l'objet Expression .

var propertyName = ((MemberExpression)((BinaryExpression)customerfilter.Body).Left).Member.Name;
var propertyValue = ((ConstantExpression)((BinaryExpression)customerfilter.Body).Right).Value;

Si vous souhaitez prendre en charge des expressions plus complexes, ExpressionVisitor doit être utilisé pour analyser l’arbre des expression .




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi