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}