C# 导出方法列表&;将库中的参数转换为文本文件

C# 导出方法列表&;将库中的参数转换为文本文件,c#,reflection,C#,Reflection,我有一个巨大的解决方案,我想将所有类中所有方法的列表导出到一个文本文件中,包括它们的参数 例如: public static class MyMath { public static bool InRange(double x1, double y1, double x2, double y2, byte Range) { return (System.Math.Max(System.Math.Abs(x1 - x2), System.Math.Abs(y1 -

我有一个巨大的解决方案,我想将所有类中所有方法的列表导出到一个文本文件中,包括它们的参数

例如:

public static class MyMath
{
    public static bool InRange(double x1, double y1, double x2, double y2, byte Range)
    {
        return (System.Math.Max(System.Math.Abs(x1 - x2), System.Math.Abs(y1 - y2)) <= Range);
    }
    public static int PointDistance(double x1, double y1, double x2, double y2)
    {
        return (int)System.Math.Sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)));
    }
    public static int Generate(int Min, int Max)
    {
        return new Random().Next(Min, Max);
    }
}

我只需要一种通过反射获得方法和参数的方法来打印出来

  • 获取程序集
  • 使用
    assembly.GetTypes()迭代每个组件的抛出类型
  • 使用
    type.GetMethods()迭代每种类型的抛出方法
  • 您可以使用:
    methodInfo.name
  • 您可以使用
    methodInfo.GetParameters()
  • 您可以使用:
    methodInfo.ReturnType
  • 示例代码:

    var assemblies = AppDomain.CurrentDomain.GetAssemblies();
    foreach (var assembly in assemblies)
    {
        var types = assembly.GetTypes();
        foreach (var type in types)
        {
            var methodes = type.GetMethods();
            foreach (var methodInfo in methodes)
            {
                var myMethodName = methodInfo.Name;
                var parameters = methodInfo.GetParameters();
                var returnType = methodInfo.ReturnType;
    
                // Write to your text file
            }
        }
    }
    
    以下是一个例子:

    StringBuilder sb = new StringBuilder();
    var type = typeof (MyMath);
    sb.AppendFormat("Class Name: {0}", type.Name);
    sb.AppendLine();
    sb.Append("Methods: ");
    sb.AppendLine();
    foreach (var method in type.GetMethods())
    {
         sb.AppendFormat("{0} {1}.{2}( ", method.ReturnType.Name, type.Name, method.Name);
         foreach (var param in method.GetParameters())
         {
             sb.AppendFormat("{0} {1},", param.GetType().Name, param.Name);
         }
         sb.Remove(sb.ToString().Length - 1, 1);
         sb.Append(")");
         sb.AppendLine();
    }
    
     var content = sb.ToString();
     File.WriteAllText("deneme.txt",content);
    

    您可以使用以下代码:

    Assembly assembly = Assembly.LoadFrom(@"E:\ClassLibrary1\ClassLibrary1\bin\Debug\ClassLibrary1.dll");
    StringBuilder s = new StringBuilder();
    foreach (Type t in assembly.GetTypes())
    {
        foreach (MethodInfo m in t.GetMethods())
            s.Append("\n" + m.ToString() + " ");
    }
    

    然后将
    s
    写入文本文件。

    太棒了!非常感谢,我的尝试显然太复杂了……非常欢迎:-)
    StringBuilder sb = new StringBuilder();
    var type = typeof (MyMath);
    sb.AppendFormat("Class Name: {0}", type.Name);
    sb.AppendLine();
    sb.Append("Methods: ");
    sb.AppendLine();
    foreach (var method in type.GetMethods())
    {
         sb.AppendFormat("{0} {1}.{2}( ", method.ReturnType.Name, type.Name, method.Name);
         foreach (var param in method.GetParameters())
         {
             sb.AppendFormat("{0} {1},", param.GetType().Name, param.Name);
         }
         sb.Remove(sb.ToString().Length - 1, 1);
         sb.Append(")");
         sb.AppendLine();
    }
    
     var content = sb.ToString();
     File.WriteAllText("deneme.txt",content);
    
    Assembly assembly = Assembly.LoadFrom(@"E:\ClassLibrary1\ClassLibrary1\bin\Debug\ClassLibrary1.dll");
    StringBuilder s = new StringBuilder();
    foreach (Type t in assembly.GetTypes())
    {
        foreach (MethodInfo m in t.GetMethods())
            s.Append("\n" + m.ToString() + " ");
    }