2014-01-29 6 views
1

У меня есть огромное решение, где я хочу экспортировать список всех методов во всех классах в текстовый файл, включая их параметры.Экспорт списка методов и параметров в библиотеку в текстовый файл

Например:

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); 
    } 
} 

я хотел бы экспортировать, что в текстовый файл, например так:

bool MyMath.InRange(x1, y1, x2, y2, Range) 

или

bool MyMath.InRange(double, double, double, double, byte) 

Я просто нужен способ, чтобы получить методы & params через Reflection для печати.

ответ

0

Вот пример:

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); 
+0

Удивительный! Большое спасибо, я явно усложнил свои попытки. – Yuki

1
  1. Получение сборки
  2. итерацию типы броска каждого assemby с помощью assembly.GetTypes();
  3. Iterate бросил методы каждого типа, используя type.GetMethods();
  4. ваш может получить имя метода с помощью: methodInfo.Name
  5. Вы можете получить ваш параметры метода с использованием methodInfo.GetParameters()
  6. Вы можете получить тип возвращаемого метода, используя: methodInfo.ReturnType

Exemple код:

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 
     } 
    } 
} 
+0

спасибо! – Yuki

+0

Добро пожаловать :-) – SidAhmed

0

Вы можете использовать следующий код:

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 в текстовый файл ,

Смежные вопросы