Obtenir le type d'objet System.Linq.Expressions.Expression

.net c# expression-trees linq

Question

Dans mon programme, j'ai une liste d'objets System.Linq.Expressions.Expression . Cette liste peut inclure différents types d'une Expression spécifique. Par exemple BinaryExpression , ConditionalExpression etc. (voir https://msdn.microsoft.com/en-us/library/system.linq.expressions.expression(v=vs.110).aspx ). Lors de la lecture de cette liste, je souhaite vérifier de quel type d’ Expression il s’agit ( BinaryExpression , ConditinalExpression , etc.).

Comment obtenir le nom / type de la classe d' Expression dérivée?

METTRE À JOUR

Voici la définition de la liste des expressions:

IEnumerable<Expression<Func<T, object>>> Expressions { get; }

et le code pour obtenir les expressions:

foreach (var expression in test.Expressions)
{
    var test = expression.GetType().ToString(); //System.Linq.Expressions.Expression`1[System.Func`2[TestObject,System.Object]]
}

Réponse acceptée

Vous devez

expression.Body.GetType();

Ce que vous .Body est l' Expression<Func<,>> , ce qui vous intéresse est son.




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