Пример #1
0
        private static Signature GetMethodSignature(JavaClass javaClass, JavaClass.MethodInfo methodInfo)
        {
            var signAttr   = methodInfo.Attributes.FirstOrDefault(a => a.NameAsStr == "Signature");
            var descriptor = ((JavaClass.Utf8CpInfo)(javaClass.ConstantPool[(methodInfo.DescriptorIndex - 1)].CpInfo));

            string signature;

            if (signAttr != null)
            {
                var index          = signAttr.NameIndex;
                var signatureIndex = ((byte[])signAttr.Info)[1];
                var signCpInfo     = GetUtf8CpInfo(javaClass, signatureIndex);;
                signature = (signCpInfo).Value;
            }
            else
            {
                signature = descriptor.Value;
            }

            var endOfArgs = signature.LastIndexOf(")");
            var argsStr   = signature.Substring(1, endOfArgs - 1);

            argsStr = argsStr.TrimEnd(';');

            return(new Signature {
                Arguments = argsStr.Split(';'),
                ReturnType = signature.Substring(endOfArgs + 1)
            });
        }
Пример #2
0
        private static void ShowSign(JavaClass javaClass, JavaClass.MethodInfo methodInfo)
        {
            var signAttr = methodInfo.Attributes.FirstOrDefault(a => a.NameAsStr == "Signature");

            Console.WriteLine(methodInfo.NameAsStr);
            var descriptor = ((JavaClass.Utf8CpInfo)(javaClass.ConstantPool[(methodInfo.DescriptorIndex - 1)].CpInfo));

            if (signAttr != null)
            {
                var index          = signAttr.NameIndex;
                var signatureIndex = ((byte[])signAttr.Info)[1];
                var signCpInfo     = ((JavaClass.Utf8CpInfo)((javaClass.ConstantPool[(signatureIndex - 1)].CpInfo)));
                var sign           = (signCpInfo).Value;
                Console.WriteLine(sign);
                Console.WriteLine("---");
                return;
            }

            var args1 = descriptor.Value;

            Console.WriteLine(args1);
            Console.WriteLine("---");
        }