コード例 #1
0
            protected override bool DoTranslate(
                Match match,
                DynamicExpression dynamicExpression,
                TranslationContext context,
                out string translated)
            {
                var subjectObject   = dynamicExpression.Arguments.First();
                var subject         = context.Translate(subjectObject);
                var methodName      = match.Groups["MethodName"].Value;
                var method          = subjectObject.Type.GetPublicMethod(methodName);
                var methodArguments = dynamicExpression.Arguments.Skip(1).ToArray();

                var methodInfo = GetMethodInfo(
                    methodName,
                    method,
                    methodArguments,
                    dynamicExpression.Type);

                translated = MethodCallExpressionTranslator.GetMethodCall(
                    subject,
                    methodInfo,
                    methodArguments,
                    dynamicExpression,
                    context);

                return(true);
            }
コード例 #2
0
 protected override bool DoTranslate(
     Match match,
     DynamicExpression dynamicExpression,
     TranslationContext context,
     out string translated)
 {
     translated = GetMemberAccess(match, dynamicExpression.Arguments, context);
     return(true);
 }
コード例 #3
0
            protected override bool DoTranslate(
                Match match,
                DynamicExpression dynamicExpression,
                TranslationContext context,
                out string translated)
            {
                var target = DynamicMemberAccessTranslator.GetMemberAccess(match, dynamicExpression.Arguments, context);
                var value  = dynamicExpression.Arguments.Last();

                translated = AssignmentExpressionTranslator.GetAssignment(target, ExpressionType.Assign, value, context);
                return(true);
            }
コード例 #4
0
            public bool TryTranslate(
                string operationDescription,
                DynamicExpression dynamicExpression,
                TranslationContext context,
                out string translated)
            {
                var match = _operationMatcher.Match(operationDescription);

                if (match.Success)
                {
                    return(DoTranslate(match, dynamicExpression, context, out translated));
                }

                translated = null;
                return(false);
            }
コード例 #5
0
 protected abstract bool DoTranslate(
     Match match,
     DynamicExpression dynamicExpression,
     TranslationContext context,
     out string translated);