PDA

Просмотр полной версии : [C# & JavaScript] Вызов функций


dober.man
28.12.2009, 00:15
Это не статья, просто хочу показать пример того как можно вызывать 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