main
 1using System;
 2using System.Linq.Expressions;
 3using System.Reflection;
 4
 5namespace gorilla.commons.utility
 6{
 7    static public class ExpressionExtensions
 8    {
 9        static public PropertyInfo pick_property<T>(this Expression<Func<T, object>> expression)
10        {
11            return (PropertyInfo) member_expression(expression).Member;
12        }
13
14        static MemberExpression member_expression<T>(Expression<Func<T, object>> expression)
15        {
16            if (expression.Body.NodeType == ExpressionType.Convert)
17                return ((UnaryExpression) expression.Body).Operand as MemberExpression;
18            if (expression.Body.NodeType == ExpressionType.MemberAccess)
19                return expression.Body as MemberExpression;
20            throw new NotImplementedException();
21        }
22    }
23}