NelIfandieva

ExpressionTrees

Feb 13th, 2020
144
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var cat = new Cat();
  2.  
  3.             Func<Cat, string> func = c => c.CatMethod(42, "MyTested ASP.NET");
  4.             Func<Cat, bool> propFunc = c => c.BoolProperty;
  5.  
  6.             Expression<Func<Cat, string>> expr = c => c.CatMethod(42, "MyTested ASP.NET");
  7.  
  8.             Expression<Func<Cat, bool>> propExpr = c => c.BoolProperty;
  9.  
  10.             var body = expr.Body;
  11.  
  12.             ParseExpression(expr);
  13.             ParseExpression(propExpr);
  14.         }
  15.  
  16.         private static void ParseExpression(Expression expression)
  17.         {
  18.             if(expression.NodeType == ExpressionType.Lambda)
  19.             {
  20.                 var lambdaExpression = (LambdaExpression)expression;
  21.  
  22.                 Console.WriteLine(lambdaExpression.Parameters.);
  23.  
  24.                 ParseExpression(lambdaExpression.Body);
  25.             }
  26.             else if(expression.NodeType == ExpressionType.Call)
  27.             {
  28.                 var methodCallExpression = (MethodCallExpression)expression;
  29.             }
  30.             else if(expression.NodeType == ExpressionType.MemberAccess)
  31.             {
  32.                 var memberExpression = (MemberExpression)expression;
  33.  
  34.                 Console.WriteLine(memberExpression.Member.Name);
  35.             }
  36.         }
RAW Paste Data