ExpressionExtensions.cs 1021 B

123456789101112131415161718192021222324252627282930
  1. namespace Caliburn.Micro.Core {
  2. using System.Linq.Expressions;
  3. using System.Reflection;
  4. /// <summary>
  5. /// Extension for <see cref="Expression"/>.
  6. /// </summary>
  7. public static class ExpressionExtensions {
  8. /// <summary>
  9. /// Converts an expression into a <see cref="MemberInfo"/>.
  10. /// </summary>
  11. /// <param name="expression">The expression to convert.</param>
  12. /// <returns>The member info.</returns>
  13. public static MemberInfo GetMemberInfo(this Expression expression) {
  14. var lambda = (LambdaExpression) expression;
  15. MemberExpression memberExpression;
  16. if (lambda.Body is UnaryExpression) {
  17. var unaryExpression = (UnaryExpression) lambda.Body;
  18. memberExpression = (MemberExpression) unaryExpression.Operand;
  19. }
  20. else {
  21. memberExpression = (MemberExpression) lambda.Body;
  22. }
  23. return memberExpression.Member;
  24. }
  25. }
  26. }