Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }