Не могу вывести методы со строковыми параметрами - C#
Формулировка задачи:
Разработать утилитарный класс «ReflLab» содержащий две статические функции:
-функцию «ShowMethodsWithString», отображающую список методов, содержащих хотя бы один параметр типа «System.String». Поиск методов со строковыми параметрами осуществлять в классе, имя которого передается в функцию «ShowMethodsWithString»;
-функцию «Execute», осуществляющую вызов указанного метода по его имени. Функция должна принимать три параметра: имя класса (className), имя метода в классе (methodName) и имя файла на диске (paramFile), содержащего значения для параметров вызываемого метода. Значения для параметров записаны в файле построчно (одна строка для каждого параметра). Считать также, что набор типов данных, допустимых в параметрах вызываемого метода, ограничен основными базовыми типами данных (int, double, bool, char, string).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
namespace LabWork_1
{
public static class RefLab
{
public static int Method1()
{
return 0;
}
public static string Method2(string Strfld)
{
return Strfld;
}
public static double Method3(double Double)
{
return Double;
}
public static void ShowMethodsWithString(Type myobj)
{
Console.WriteLine("Метод содержащий строковые параметры:\n");
try
{
foreach (MemberInfo m in myobj.GetMethods())//перебор методов
{
foreach (ParameterInfo pi in ((MethodInfo)m).GetParameters())//параметры в методе
{
if (Convert.ToString(pi.ParameterType) == "System.String")
{
Console.WriteLine("Method {0}", m.Name);
}
}
}
}
catch (Exception ex)
{ Console.WriteLine(ex.Message); }
}
public void execute()
{
string className=null;
string methodName=null;
string paramFile=null;
StreamReader file = new StreamReader("Data.txt");
string str;
string classname=" ";
int size = 23;
str = file.ReadToEnd();
int i = 0;
while (str[i] != ',')
{
className += str[i++]; }
for (int t = i + 1; t < size; t++)
{
methodName += str[t];
}
int size2 = str.Length;
for (int o = size + 1; o < size2; o++)
{ paramFile += str[o]; }
Console.WriteLine("чтение из файла:{0},{1},{2}\n", className, methodName, paramFile);
MethodInfo myMethodInfo = myobj.GetMethod(methodName);
object[] mParam = new object[] { paramFile };
Console.WriteLine("Вызванный метод {0} из класса - {1} ", myMethodInfo, myobj.FullName);
Console.WriteLine(myMethodInfo.Invoke(classname,mParam) + "\n");
file.Close();
}
}
class Program
{
static void Main(string[] args)
{
string className = null;
string methodName = null;
string paramFile = null;
Type myobj = GetType(typeof(RefLab));
RefLab.ShowMethodsWithString(myobj);
RefLab.execute();
Console.ReadKey();
}
}
}Решение задачи: «Не могу вывести методы со строковыми параметрами»
textual
Листинг программы
castedParams.Add(Convert.ChangeType(@params[i], paramInfos[i].ParameterType));