コード例 #1
0
        public override void LeaveMethodInvocationExpression(MethodInvocationExpression node)
        {
            var externalMethod = node.Target.Entity as ExternalMethod;

            if (externalMethod != null)
            {
                ParameterInfo[] parameters = externalMethod.MethodInfo.GetParameters();
                int             i          = 0;
                int             length     = parameters.Length;
                if (length < 0)
                {
                    throw new ArgumentOutOfRangeException("max");
                }
                while (i < length)
                {
                    int num = i;
                    i++;
                    ParameterInfo[] expr_55 = parameters;
                    if (expr_55[RuntimeServices.NormalizeArrayIndex(expr_55, num)].ParameterType.IsByRef)
                    {
                        ParameterInfo[] expr_72 = parameters;
                        if (expr_72[RuntimeServices.NormalizeArrayIndex(expr_72, num)].IsOut)
                        {
                            NodeCollection <Expression> arg_AC_0 = node.Arguments;
                            int arg_AC_1 = num;
                            OutputExpression outputExpression = new OutputExpression();
                            Expression       expression       = outputExpression.Expression = node.Arguments[num];
                            arg_AC_0[arg_AC_1] = outputExpression;
                        }
                        else
                        {
                            NodeCollection <Expression> arg_E1_0 = node.Arguments;
                            int             arg_E1_1             = num;
                            ByRefExpression byRefExpression      = new ByRefExpression();
                            Expression      expression2          = byRefExpression.Expression = node.Arguments[num];
                            arg_E1_0[arg_E1_1] = byRefExpression;
                        }
                    }
                }
            }
        }
コード例 #2
0
 public override void LeaveMethodInvocationExpression(MethodInvocationExpression node)
 {
     var externalMethod = node.Target.Entity as ExternalMethod;
     if (externalMethod != null)
     {
         ParameterInfo[] parameters = externalMethod.MethodInfo.GetParameters();
         int i = 0;
         int length = parameters.Length;
         if (length < 0)
         {
             throw new ArgumentOutOfRangeException("max");
         }
         while (i < length)
         {
             int num = i;
             i++;
             ParameterInfo[] expr_55 = parameters;
             if (expr_55[RuntimeServices.NormalizeArrayIndex(expr_55, num)].ParameterType.IsByRef)
             {
                 ParameterInfo[] expr_72 = parameters;
                 if (expr_72[RuntimeServices.NormalizeArrayIndex(expr_72, num)].IsOut)
                 {
                     NodeCollection<Expression> arg_AC_0 = node.Arguments;
                     int arg_AC_1 = num;
                     OutputExpression outputExpression = new OutputExpression();
                     Expression expression = outputExpression.Expression = node.Arguments[num];
                     arg_AC_0[arg_AC_1] = outputExpression;
                 }
                 else
                 {
                     NodeCollection<Expression> arg_E1_0 = node.Arguments;
                     int arg_E1_1 = num;
                     ByRefExpression byRefExpression = new ByRefExpression();
                     Expression expression2 = byRefExpression.Expression = node.Arguments[num];
                     arg_E1_0[arg_E1_1] = byRefExpression;
                 }
             }
         }
     }
 }