using System.Collections.Generic;
using System.Linq.Expressions;
public static void Main()
Expression<Func<int, int>> plusOne = n => n + 1;
ConsoleVisitor visitor = new ConsoleVisitor();
visitor.Visit(plusOne.Body);
public class ConsoleVisitor : ExpressionVisitor
public List<Data> Items {get;set;} = new List<Data>();
protected override Expression VisitBinary(BinaryExpression node)
case ExpressionType.Divide:
protected override Expression VisitConstant(ConstantExpression node)
Console.Write(node.Value);
protected override Expression VisitParameter(ParameterExpression node)
Console.Write(node.Name);
public string NodeType {get;set;}
public List<Data> Children {get;set;}