Вызвать делегат по его имени
От: BDEsoft  
Дата: 11.12.07 07:50
Оценка:
Здравствуйте, возникла такая проблема.
Есть библиотека, выполняющая функции калькулятора. Ей задаются строки вида "a=5"(запомнить переменную с именем a и значение 5), "4+a"(возвратить результат 4+5) и т.д.
Необходимо сделать следующее, ввести стоку примера "apt(x,y)=aptfunc"(где apt — имя функции для запоминания, (x,y) — ее аргументы, aptfunc — имя делегата функции". Сам делегат определен в программе, вызывающей эту библиотеку:
    class pr1
    {
        public static int apt(int x, int y)
        {
            return x * y;
        }
    }
    class Program
    {
        public static CalcLib.CalcLib cl = new CalcLib.CalcLib();
        delegate int aptdelg(int x,int y);

        static void Main(string[] args)
        {
            aptdelg aptfunc = new aptdelg(pr1.apt);
            cl["apt(x,y)"] = "aptfunc";
            int result=cl["apt(3,4)"];    
        }

для получения результата result калькулятору отправляется строка "apt(3,4)", по которой она должна вызвать метод pr1.apt с аргументами 3 и 4.
так вот вопрос, как из библиотеки вызвать метод p1.apt с аргументами (3,4) имея только текстовое название делегата "aptfunc", может чтото не так делаю, может нужно задавать строку так: "apt(x,y)=aptdelg", я в этом плохо понимаю...
Спасибо за ответы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.