Не могу вывести методы со строковыми параметрами - 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));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы