Guest User

Untitled

a guest
Feb 21st, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. bool AreEqual(Foo foo)
  2. {
  3. return foo.Value1 == foo.Value2;
  4. }
  5.  
  6. //build the parameter expression of the object
  7. ParameterExpression parameter = Expression.Parameter(typeof(Foo), "x");
  8. //the left member
  9. MemberExpression leftMember = Expression.Property(parameter, "Value1");
  10. //the right member
  11. MemberExpression rightMember = Expression.Property(parameter, "Value2");
  12. //the left lambda
  13. LambdaExpression leftLmbda = Expression.Lambda(leftMember, parameter);
  14. //the right lambda
  15. LambdaExpression rightLambda = Expression.Lambda(rightMember, parameter);
  16. //and here I evaluate the boolean expression:
  17. Expression equalExpression = Expression.Equal(rightLambda, leftLmbda);
  18. //the lambda of the equal expression
  19. LambdaExpression lambda = Expression.Lambda(equalExpression, parameter);
  20.  
  21. //the object:
  22. Foo foo = new Foo { Value1= 5, Value2=5 };
  23.  
  24. Delegate expression = lambda.Compile();
  25. var eq = expression.DynamicInvoke(foo);
  26.  
  27. //build the parameter expression of the object
  28. ParameterExpression parameter = Expression.Parameter(typeof(Foo), "x");
  29. //the left member
  30. MemberExpression leftMember = Expression.Property(parameter, "Value1");
  31. //the right member
  32. MemberExpression rightMember = Expression.Property(parameter, "Value2");
  33. //and here I evaluate the boolean expression:
  34. Expression equalExpression = Expression.Equal(leftMember, rightMember);
  35. //the lambda of the equal expression
  36. LambdaExpression lambda = Expression.Lambda(equalExpression, parameter);
  37.  
  38. //the object:
  39. Foo foo = new Foo { Value1 = 5, Value2 = 5 };
  40.  
  41. Delegate expression = lambda.Compile();
  42. var eq = expression.DynamicInvoke(foo);
Add Comment
Please, Sign In to add comment