@@ -8,28 +8,35 @@ namespace JoinRpg.Helpers
88 public static class ExpressionHelpers
99 {
1010 [ CanBeNull ]
11- public static string ? AsPropertyName < T1 , T2 > ( this Expression < Func < T1 , T2 > > expression ) => expression . AsPropertyAccess ( ) ? . Name ;
11+ public static string ? AsPropertyName < T1 , T2 > ( this Expression < Func < T1 , T2 > > expression )
12+ => expression . AsPropertyAccess ( ) ? . Name ;
13+
14+ public static string ? AsPropertyName < T1 > ( this Expression < Func < T1 > > expression )
15+ => expression . AsPropertyAccess ( ) ? . Name ;
16+
17+ [ CanBeNull ]
18+ public static PropertyInfo ? AsPropertyAccess < T1 , T2 > ( this Expression < Func < T1 , T2 > > expression )
19+ => AsPropetyAccessImpl ( expression . Body ) ;
1220
1321 [ CanBeNull ]
14- public static PropertyInfo ? AsPropertyAccess < T1 , T2 > (
15- this Expression < Func < T1 , T2 > > expression )
22+ public static PropertyInfo ? AsPropertyAccess < T > ( this Expression < Func < T > > expression )
23+ => AsPropetyAccessImpl ( expression . Body ) ;
24+
25+ private static PropertyInfo ? AsPropetyAccessImpl ( Expression expression )
1626 {
17- if ( expression . Body is UnaryExpression convertExpression &&
27+ if ( expression is UnaryExpression convertExpression &&
1828 convertExpression . NodeType == ExpressionType . Convert )
1929 {
2030 return AsPropertyAccess ( convertExpression . Operand ) ;
2131 }
2232
23- return AsPropertyAccess ( expression . Body ) ;
33+ return AsPropertyAccess ( expression ) ;
2434 }
2535
2636 [ CanBeNull ]
2737 private static PropertyInfo ? AsPropertyAccess ( Expression body )
2838 {
29- var memberExpression = body as MemberExpression ;
30- return memberExpression ? . Member as PropertyInfo ;
39+ return ( body as MemberExpression ) ? . Member as PropertyInfo ;
3140 }
32-
33- public static string AsPropertyName < T1 > ( this Expression < Func < T1 > > expression ) => ( ( MemberExpression ) expression . Body ) . Member . Name ;
3441 }
3542}
0 commit comments