Мне тоже не очень понятно. Если вы не хотите использовать рефлексию (иногда тяжелую) для динамического вызова методов с использованием переменной, вы можете использовать что-то вроде коллекции, содержащей делегаты в качестве значений, и вызывать их.
Я использую чрезвычайно похожий объект словаря для динамического вызова известного метода на основе строковых входов.
код псевдо:
delegate void Del(int i, double j);
class MathClass
{
static void Main()
{
MathClass m = new MathClass();
// Delegate instantiation using "MultiplyNumbers"
Del d = m.MultiplyNumbers;
Hashtable ht = new Hashtable();
ht.Add("mult", d);
// Invoke the delegate object.
System.Console.WriteLine("Invoking the delegate using 'MultiplyNumbers':");
for (int i = 1; i <= 5; i++)
{
((del) ht("mult"))(i, 2);
}
}
// Declare the associated method.
void MultiplyNumbers(int m, double n)
{
System.Console.Write(m * n + " ");
}
}