Étant donné une expression arbitraire de type Expression<Func<int>>
, comment puis-je obtenir une liste de tous les objets qui pourraient, mais pas nécessairement, affecter le résultat.Comment obtenir tous les facteurs d'un arbre d'expression qui affectent sa sortie
Je suis à la recherche d'une fonction comme ceci:
IEnumerable<object> GetFactors(Expression<Func<int>> expression)
{
//return a list of all objects in the expression that affect the result.
}
Exemple 1
Expression<Func<int>> expression =() => a + b;
où a
et b
sont int
s, GetFactors
reviendriez un IEnumerable<object>
contenant a
et b
.
Exemple 2
Expression<Func<int>> expression =() => obj1 != obj2 ? a + b : c + d;
GetFactors
retournerait un IEnumerable<object>
contenant obj1
, obj2
, a
, b
, c
et d
.
Donc, fondamentalement, tous les points de terminaison (feuilles) ou voulez-vous également détecter le code mort? –
@HenkHolterman: Je me fiche du code mort. Je cherche toutes les feuilles, code mort ou non. Je pense qu'il serait correct de dire que je m'intéresse à tous les opérandes de toutes les expressions de l'arbre. – Verax