Reflection объяснить коды
Код:
class MyTestClass
{
static public void PrintMethods(string className)
{
try
{
Type classType = Type.GetType(className);
var methodNames =
from methodInfo in classType.GetMethods()
where methodInfo.GetParameters().Any(parameterInfo => parameterInfo.ParameterType == typeof(string))
select methodInfo.Name;
foreach (var method in methodNames)
Console.WriteLine(method);
}
catch (Exception)
{
}
}
static public void CallStaticMethod(string className, string methodName)
{
try
{
using (StreamReader reader = new StreamReader(@"data.txt"))
{
Type.GetType(className).GetMethod(methodName, BindingFlags.Static | BindingFlags.Public).Invoke(null, new string[] { reader.ReadToEnd() });
}
}
catch(Exception)
{
}
}
}
{
static public void PrintMethods(string className)
{
try
{
Type classType = Type.GetType(className);
var methodNames =
from methodInfo in classType.GetMethods()
where methodInfo.GetParameters().Any(parameterInfo => parameterInfo.ParameterType == typeof(string))
select methodInfo.Name;
foreach (var method in methodNames)
Console.WriteLine(method);
}
catch (Exception)
{
}
}
static public void CallStaticMethod(string className, string methodName)
{
try
{
using (StreamReader reader = new StreamReader(@"data.txt"))
{
Type.GetType(className).GetMethod(methodName, BindingFlags.Static | BindingFlags.Public).Invoke(null, new string[] { reader.ReadToEnd() });
}
}
catch(Exception)
{
}
}
}
Первая функция печатает на экран все методы класса, которые принимают аргументом строку.
Вторая вызовет метод класса, который имеет спецификатор static и public, передав параметрами строки из файла data.txt. Имя метода задаётся аргументом функции для класса, заданного аргументом функции.
Столько лет прошло, а до сих пор помню. :)
Цитата: CassandraDied
Ух ты, прямо как в наших лабораторных, когда я учился.
Первая функция печатает на экран все методы класса, которые принимают аргументом строку.
Вторая вызовет метод класса, который имеет спецификатор static и public, передав параметрами строки из файла data.txt. Имя метода задаётся аргументом функции для класса, заданного аргументом функции.
Столько лет прошло, а до сих пор помню. :)
Первая функция печатает на экран все методы класса, которые принимают аргументом строку.
Вторая вызовет метод класса, который имеет спецификатор static и public, передав параметрами строки из файла data.txt. Имя метода задаётся аргументом функции для класса, заданного аргументом функции.
Столько лет прошло, а до сих пор помню. :)
как обьяснит Any(parameterInfo => parameterInfo.ParameterType == typeof(string)) по
C#
Это расширение для какого-то интерфейса, который реализует класс Array, либо для самого этого класса, которое по заданному предикату находит значение в массиве.