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