Не могу вывести методы со строковыми параметрами - 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));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д