Как создать переменную для вызова метода - PullRequest
0 голосов
/ 17 ноября 2009

Это способ в C # создать переменную в вызове метода без использования оператора switch.

Ответы [ 2 ]

4 голосов
/ 17 ноября 2009

Звучит так, как будто вы хотите взять строку и использовать эту строку для вызова метода объекта, это можно сделать с помощью отражение без необходимости в операторе switch.

string methodName = "ToString";
var method = typeof(TypeYourMethodExistsOn).GetMethod(methodName);
method.Invoke(objectInstance, null);
1 голос
/ 17 ноября 2009

Мне тоже не очень понятно. Если вы не хотите использовать рефлексию (иногда тяжелую) для динамического вызова методов с использованием переменной, вы можете использовать что-то вроде коллекции, содержащей делегаты в качестве значений, и вызывать их.

Я использую чрезвычайно похожий объект словаря для динамического вызова известного метода на основе строковых входов.

код псевдо:

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 + " ");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...