public Expression AssemblySimpleUnaryExpression <TTo>(LastLevelNodeExpressionTreeModel model, ParameterExpression parameter, IEnumerable <Expression> consts) { var memberName = _memberHelper.GetMemberName(model.LeftExpression); var property = typeof(TTo).GetProperty(memberName); var memberExpression = _helper.DefineMemberExpression(parameter, property, memberName); return(_helper.DefineTypeOfOperator(model.ExpressionWithMethodModel.ValueOfExpressionType, memberExpression, consts, model.ExpressionWithMethodModel.CurrentMethodInfo)); }
public Expression AssemblySimpleBinaryExpression <TTo>(LastLevelNodeExpressionTreeModel model, ParameterExpression parameter) { var constantExpression = model.RightExpression != null ? Expression.Constant(model.RightExpression.MaybeAs <ConstantExpression>().GetOrDefault(null).Value, model.RightExpression.Type) : null; MemberExpression memberExpression; if (model.LeftExpression != null) { var memberName = _memberHelper.GetMemberName(model.LeftExpression); var property = typeof(TTo).GetProperty(memberName); memberExpression = _helper.DefineMemberExpression(parameter, property, memberName); } else { var member = typeof(TTo).GetMember(typeof(TTo).FullName)[0]; memberExpression = Expression.MakeMemberAccess(parameter, member); } return(_helper.DefineTypeOfOperator(model.ExpressionWithMethodModel.ValueOfExpressionType, memberExpression, new[] { constantExpression }, model.ExpressionWithMethodModel.CurrentMethodInfo)); }