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) }); }
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("---"); }