123456789101112131415161718192021222324252627282930 |
- namespace Caliburn.Micro.Core {
- using System.Linq.Expressions;
- using System.Reflection;
- /// <summary>
- /// Extension for <see cref="Expression"/>.
- /// </summary>
- public static class ExpressionExtensions {
- /// <summary>
- /// Converts an expression into a <see cref="MemberInfo"/>.
- /// </summary>
- /// <param name="expression">The expression to convert.</param>
- /// <returns>The member info.</returns>
- public static MemberInfo GetMemberInfo(this Expression expression) {
- var lambda = (LambdaExpression) expression;
- MemberExpression memberExpression;
- if (lambda.Body is UnaryExpression) {
- var unaryExpression = (UnaryExpression) lambda.Body;
- memberExpression = (MemberExpression) unaryExpression.Operand;
- }
- else {
- memberExpression = (MemberExpression) lambda.Body;
- }
- return memberExpression.Member;
- }
- }
- }
|