[C# & JavaScript] Вызов функций

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by dober.man, 27 Dec 2009.

  1. dober.man

    dober.man Banned

    Joined:
    9 Dec 2009
    Messages:
    6
    Likes Received:
    8
    Reputations:
    4
    Это не статья, просто хочу показать пример того как можно вызывать JavaScript функции внутри приложения C#. Это достаточно таки интересная возможность!

    В частности речь пойдет о вызове функции eval(). Для этого потребуется создать "обертку" для функции eval(), которая вычисляет выражение, переданное в качестве параметра.

    Ниже приведен код "обертки":
    Code:
    package JSEval
    {
        class JSEval
        {
            public function Eval(expr : String) : String
            {
                return eval(expr, "unsafe");
            }
        }
    }
    Далее сохраните этот код в файл под названием «JSEval.JSEval.js».

    Теперь необходимо скомпилировать её в DLL-сборку. Делается это с помощью утилиты «Visual Studio 2008 Command Prompt». Открыв эту утилиту, выполните следующую команду jsc /t:library JSEval.JSEval.js, после этого в папке с JavaScript-файлом должна появиться наша сборка «JSEval.JSEval.dll».

    Далее создаем, к примеру, консольный проект и подключаем сборку(JSEval.JSEval.dll). Так-же понадобиться подключить сборку «Microsoft.JScript». Вот и все, теперь можно использовать класс JSEval в проекте.

    Пример представлен ниже:
    Code:
    class Program
    {
        static void Main(string[] args)
        {
            JSEval.JSEval eval = new JSEval.JSEval();
            string expression, result;
     
            Console.Write("Выражение: ");
            expression = Console.ReadLine();
     
            try
            {
                result = eval.Eval(expression).ToString();
            }
            catch
            {
                result = "!!!";
            }
     
            Console.WriteLine("Result: {0}", result);
            Console.ReadLine();
        }
    }
    Ну и вот собственно работа приложения:

    [​IMG]

    Для тех кто не знает как добавлять сборки:
    Проект -> Добавить ссылку -> вкладка ".NET" -> Microsoft.JScript
    Проект -> Добавить ссылку -> вкладка "Обзор" -> находите JSEval.JSEval.dll
     
    1 person likes this.