Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [C# & JavaScript] Вызов функций (https://forum.antichat.xyz/showthread.php?t=166566)

dober.man 28.12.2009 00:15

[C# & JavaScript] Вызов функций
 
Это не статья, просто хочу показать пример того как можно вызывать JavaScript функции внутри приложения C#. Это достаточно таки интересная возможность!

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

Ниже приведен код "обертки":
Код:

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 в проекте.

Пример представлен ниже:
Код:

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();
    }
}

Ну и вот собственно работа приложения:

http://img442.imageshack.us/img442/43/82581004.jpg

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


Время: 04:24