Example #1
0
        private MethodInfo BuildMethod(GenericMehodInfo method, TypeInfo[] types, ClassType where)
        {
            var gRet = method.ret as GenericType;

            var realRetType = gRet != null ? types[gRet.Number].Generic(gRet.Number) : method.ret;

            var res = new MethodInfo(method.name, realRetType, method.isStatic, where);

            foreach (var item in method.args)
            {
                var      gtype = item.Type as GenericType;
                TypeInfo varType;

                if (gtype != null)
                {
                    varType = types[gtype.Number].Generic(gtype.Number);
                }
                else
                {
                    varType = item.Type;
                }

                res.AddArg(item.Name, varType);

                //res.GenericArgs.Add(gtype != null ? gtype.Number : -1);
            }

            return(res);
        }
        protected void BuildMethod(ClassType classType, System.Reflection.MethodInfo methodInfo)
        {
            var retType = storage.GetType(ConvertMSILNames(methodInfo.ReturnType));


            var args =
                methodInfo.GetParameters()
                .ToList()
                .Select(x => new { Type = storage.GetType(ConvertMSILNames(x.ParameterType)), Name = x.Name });

            if (!args.Any(x => x.Type == null))
            {
                var method = new plsql_msil.Types.MethodInfo(methodInfo.Name, retType, methodInfo.IsStatic, classType);

                foreach (var item in args)
                {
                    method.AddArg(item.Name, item.Type);
                }

                classType.AddMethod(method);
            }
        }