コード例 #1
0
        public virtual AndroidJavaObject Invoke(string methodName, object[] args)
        {
            Exception    ex          = null;
            BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;

            Type[] array = new Type[args.Length];
            for (int i = 0; i < args.Length; i++)
            {
                array[i] = ((args[i] == null) ? typeof(AndroidJavaObject) : args[i].GetType());
            }
            AndroidJavaObject result;

            try
            {
                MethodInfo method = base.GetType().GetMethod(methodName, bindingAttr, null, array, null);
                bool       flag   = method != null;
                if (flag)
                {
                    result = _AndroidJNIHelper.Box(method.Invoke(this, args));
                    return(result);
                }
            }
            catch (TargetInvocationException ex2)
            {
                ex = ex2.InnerException;
            }
            catch (Exception ex3)
            {
                ex = ex3;
            }
            string[] array2 = new string[args.Length];
            for (int j = 0; j < array.Length; j++)
            {
                array2[j] = array[j].ToString();
            }
            bool flag2 = ex != null;

            if (flag2)
            {
                string[] expr_D2  = new string[6];
                int      arg_E6_1 = 0;
                Type     expr_DA  = base.GetType();
                expr_D2[arg_E6_1] = ((expr_DA != null) ? expr_DA.ToString() : null);
                expr_D2[1]        = ".";
                expr_D2[2]        = methodName;
                expr_D2[3]        = "(";
                expr_D2[4]        = string.Join(",", array2);
                expr_D2[5]        = ")";
                throw new TargetInvocationException(string.Concat(expr_D2), ex);
            }
            IntPtr arg_17B_0 = this.GetRawProxy();

            string[] expr_129 = new string[7];
            expr_129[0] = "No such proxy method: ";
            int  arg_145_1 = 1;
            Type expr_139  = base.GetType();

            expr_129[arg_145_1] = ((expr_139 != null) ? expr_139.ToString() : null);
            expr_129[2]         = ".";
            expr_129[3]         = methodName;
            expr_129[4]         = "(";
            expr_129[5]         = string.Join(",", array2);
            expr_129[6]         = ")";
            AndroidReflection.SetNativeExceptionOnProxy(arg_17B_0, new Exception(string.Concat(expr_129)), true);
            result = null;
            return(result);
        }