Вызов методов по текстовой переменной (динамически) - C#
Формулировка задачи:
У меня написаны 100+ методов, например:
- петь()
- танцевать()
- лежать()
методы регулярно пополняются(их число увеличивается)
Могу я их вызвать динамически например текстовым параметром или каким угодно параметром?
Возможно ли что-нибудь такое?
Как я хочу:
delegate bool MyDelegate();
MyDelegate[] foo; //массив выборки моих методов
foo = new MyDelegate[place.Keys.Count]; //узнаем сколько нужно методов. например 3
foreach (IniFile.IniSection.IniKey key in place.Keys) //цикл добавления методов в массив
{
int index = key.id - 1;
string Method = key.name //переменная, которую я хочу использовать как параметр
// для вызова любого из своих методов = "петь" или "танцевать" или "ir_version"
foo[index] = ВызовМетода(Method); //или foo[index] = НайтиМетод(Method);
}Как сделано:
delegate bool MyDelegate();
MyDelegate[] foo; //массив выборки моих методов
foo = new MyDelegate[place.Keys.Count]; //узнаем сколько нужно методов
foreach (IniFile.IniSection.IniKey key in place.Keys) //цикл добавления методов в массив делегатов
{
int index = key.id - 1;
switch (key.Value) //100+ кейсов...
case "ir.version":
foo[index] = test.ir_version;
break;
case "петь":
foo[index] = test.петь;
break;
}Решение задачи: «Вызов методов по текстовой переменной (динамически)»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
string methodName = "Method1";
MyClass MyObject = new MyClass();
Type myClassType = MyObject.GetType();
MethodInfo MyMethod = myClassType.GetMethod(methodName, BindingFlags.Public|BindingFlags.Instance);
MyMethod.Invoke(MyObject, new object[]{"New","message"});
Console.ReadKey();
}
}
class MyClass
{
public void Method1(string message1, string message2)
{
Console.WriteLine("Method1");
Console.WriteLine(message1 + " " + message2);
}
public void Method2(string message)
{
Console.WriteLine("Method2");
Console.WriteLine(message);
}
}