Skip to content

Commit fcb1ecb

Browse files
committed
Refactor getObj to be more generic
1 parent 4ee6a7f commit fcb1ecb

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

src/NHibernate/Impl/ExpressionProcessor.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -252,28 +252,27 @@ private static ICriterion Le(ProjectionInfo property, object value)
252252
/// </summary>
253253
public static object FindValue(Expression expression)
254254
{
255+
object findValue(Expression e) => e != null ? FindValue(e) : null;
256+
255257
switch (expression.NodeType)
256258
{
257259
case ExpressionType.Constant:
258260
var constantExpression = (ConstantExpression) expression;
259261
return constantExpression.Value;
260262
case ExpressionType.MemberAccess:
261263
var memberExpression = (MemberExpression) expression;
262-
object getObj() => memberExpression.Expression != null ? FindValue(memberExpression.Expression) : null;
263-
264264
switch (memberExpression.Member.MemberType)
265265
{
266266
case MemberTypes.Field:
267-
return ((FieldInfo) memberExpression.Member).GetValue(getObj());
267+
return ((FieldInfo) memberExpression.Member).GetValue(findValue(memberExpression.Expression));
268268
case MemberTypes.Property:
269-
return ((PropertyInfo) memberExpression.Member).GetValue(getObj());
269+
return ((PropertyInfo) memberExpression.Member).GetValue(findValue(memberExpression.Expression));
270270
}
271271
break;
272272
case ExpressionType.Call:
273273
var methodCallExpression = (MethodCallExpression) expression;
274274
var args = methodCallExpression.Arguments.ToArray(arg => FindValue(arg));
275-
276-
var callingObject = methodCallExpression.Object == null ? null : FindValue(methodCallExpression.Object);
275+
var callingObject = findValue(methodCallExpression.Object);
277276
return methodCallExpression.Method.Invoke(callingObject, args);
278277
case ExpressionType.Convert:
279278
var unaryExpression = (UnaryExpression) expression;

0 commit comments

Comments
 (0)