Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2015, 17:03   #1
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию Не могу вывести методы со строковыми параметрами и записать

Разработать утилитарный класс «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();
        }
    }
}
Otar4ik вне форума Ответить с цитированием
Старый 11.10.2015, 17:46   #2
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Уже не надо
Otar4ik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести информацию из двух таблиц записать в третью Владимир1989 SQL, базы данных 19 09.02.2013 09:26
Вывести числа Фибоначчи до n членов и записать в файл Richik123 Паскаль, Turbo Pascal, PascalABC.NET 1 19.04.2012 20:35
не могу создать конструктор с параметрами по умолчанию wwe2012 Общие вопросы C/C++ 3 30.03.2011 17:20
Не могу вызвать процедуру С ПАРАМЕТРАМИ из другой книги Danver Microsoft Office Excel 4 24.12.2010 12:34