Esempio n. 1
0
        //方法的完整名,包括方法名+(参数)
        public static string GetFullName(MethodInfo mi)
        {
            string paras = Helper_API_Method_Para.GetParaString(mi);

            if (paras.Length < 1)
            {
                return(string.Format("{0}.{1}", mi.ReflectedType.FullName, mi.Name));
            }
            return(string.Format("{0}.{1}({2})", mi.ReflectedType.FullName, mi.Name, paras));
        }
Esempio n. 2
0
 }                                       //参数的摘要
 public static Helper_API_Method_Para[] GetParas(MethodInfo method)
 {
     ParameterInfo[]          paramInfos = method.GetParameters();
     Helper_API_Method_Para[] paras      = new Helper_API_Method_Para[paramInfos.Length];
     for (int i = 0; i < paramInfos.Length; i++)
     {
         ParameterInfo pi = paramInfos[i];
         paras[i]      = new Helper_API_Method_Para();
         paras[i].Name = pi.Name;
         paras[i].Type = pi.ParameterType.FullName;
     }
     return(paras);
 }
Esempio n. 3
0
        public Helper_API_Method[] Methods(string classname)
        {
            string   assemblyName  = "Song.ViewData";
            string   classFullName = String.Format("{0}.Methods.{1}", assemblyName, classname);
            Assembly assembly      = Assembly.Load(assemblyName);
            //当前类的反射对象
            Type classtype = null;

            foreach (Type info in assembly.GetExportedTypes())
            {
                if (info.FullName.Equals(classFullName, StringComparison.CurrentCultureIgnoreCase))
                {
                    classtype = info;
                    break;
                }
            }
            //注释文档
            XmlNodeList nodes = readXml();
            //类下面的方法,仅获取当前类生成的方法,不包括父类
            List <Helper_API_Method> list = new List <Helper_API_Method>();

            MemberInfo[] mis = classtype.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public);
            foreach (MethodInfo mi in mis)
            {
                string fullname = Helper_API_Method.GetFullName(mi);        //带参数的方法名称
                //方法的注释
                XmlNode node = Helper_API_Method.GetNode(mi, nodes);
                list.Add(new Helper_API_Method()
                {
                    Name      = mi.Name,
                    FullName  = fullname,
                    Paras     = Helper_API_Method_Para.GetParas(mi, node),
                    Return    = Helper_API_Method_Return.GetReturn(mi, node),
                    ClassName = mi.DeclaringType.Name,
                    Class     = mi.DeclaringType.FullName,
                    Intro     = Helper_API_Method.GetHelp(node, "summary"),
                    Remarks   = Helper_API_Method.GetHelp(node, "remarks"),
                    Example   = Helper_API_Method.GetHelp(node, "example"),
                    Attrs     = Helper_API_Method_Attr.GetAttrs(mi)
                });
            }
            //按方法名排序
            list.Sort((a, b) => a.Name.CompareTo(b.Name));
            return(list.ToArray <Helper_API_Method>());
        }
Esempio n. 4
0
 public static Helper_API_Method_Para[] GetParas(MethodInfo method, XmlNode node)
 {
     Helper_API_Method_Para[] paras = GetParas(method);
     if (node == null)
     {
         return(paras);
     }
     for (int i = 0; i < paras.Length; i++)
     {
         Helper_API_Method_Para pi = paras[i];
         foreach (XmlNode n in node.SelectNodes("param"))
         {
             string name = n.Attributes["name"].Value;
             if (name.Equals(pi.Name, StringComparison.CurrentCultureIgnoreCase))
             {
                 pi.Intro = n.InnerText.Trim();
                 break;
             }
         }
     }
     return(paras);
 }
Esempio n. 5
0
 }                                       //参数的摘要
 public static Helper_API_Method_Para[] GetParas(MethodInfo method)
 {
     ParameterInfo[]          paramInfos = method.GetParameters();
     Helper_API_Method_Para[] paras      = new Helper_API_Method_Para[paramInfos.Length];
     for (int i = 0; i < paramInfos.Length; i++)
     {
         ParameterInfo pi = paramInfos[i];
         paras[i]      = new Helper_API_Method_Para();
         paras[i].Name = pi.Name;
         Type nullableType = System.Nullable.GetUnderlyingType(pi.ParameterType);
         if (nullableType == null)
         {
             paras[i].Type     = pi.ParameterType.FullName;
             paras[i].Nullable = false;
         }
         else
         {
             paras[i].Type     = nullableType.FullName + "?";
             paras[i].Nullable = true;
         }
     }
     return(paras);
 }