获取方法签名类型和名称

本文关键字:类型 获取 方法 | 更新日期: 2023-09-27 18:31:20

我正在编写一个'快速' c# 应用程序,它将允许我查看程序集 DLL 下可用的所有方法,到目前为止一切都很好,我可以输出类、访问修饰符和名称:

    private void btnListMethodName()
    {
        string sAssemblyFileName = assemblyLocation.Text;
        if (sAssemblyFileName.Length != 0)
        {
            Assembly assem = Assembly.LoadFrom(sAssemblyFileName);
            Type[] types = assem.GetTypes();
            ArrayList arrl = new ArrayList();
            foreach (Type cls in types)
            {
                try
                {
                    //Add Class Name                       
                    arrl.Add(cls.FullName);
                    if (cls.IsAbstract)
                        arrl.Add("Abstract Class:" + cls.Name.ToString());
                    else if (cls.IsPublic)
                        arrl.Add("Public Class:" + cls.Name.ToString());
                    else if (cls.IsSealed)
                        arrl.Add("Sealed Class:" + cls.Name.ToString());
                    MemberInfo[] methodName = cls.GetMethods();
                    foreach (MemberInfo method in methodName)
                    {
                        method.ReflectedType.GetProperties();
                        if (method.ReflectedType.IsPublic)
                            arrl.Add("'tPublic - " + method.Name.ToString());
                        else
                            arrl.Add("'tNon-Public - " + method.Name.ToString());
                    }
                }
                catch (System.NullReferenceException)
                {
                    Console.WriteLine("Error msg");
                }
            }
            olvMain.SetObjects(arrl);
            for (int i = 0; i < arrl.Count; i++)
            {
                AssemblyList.Items.Add(arrl[i].ToString());
            }
        }
    }

我现在需要输出的是方法签名值的数据类型和名称。例如,目前我输出"公共 - 方法名称",我想输出的是"公共 - 方法名称(字符串方法数据,整型方法Data2)"

这可能吗?

获取方法签名类型和名称

您可以像这样获取方法的参数;

 ParameterInfo[] pars = method.GetParameters();

要做到这一点,你需要改变;

MemberInfo[] methodName = cls.GetMethods();

MethodInfo[] methodName = cls.GetMethods();

参考 MethodBase.GetParameters

好吧,你可以使用

方法。获取参数()

Wich 将返回一个ParameterInfo数组。

然后,ParameterInfo有一个Name和一个ParameterType(具有Name)属性。