Как запустить скрипт F# в контексте приложения C#
легко ли запустить скрипт F# изнутри (и в контексте) приложения C# (хоста).
С 'в контексте' я имею в виду следующее должно быть истинным:
- нет отдельного процесса для выполнения скрипта
- доступ из скрипта F# к статическому содержимому хост-приложения (классы, свойства, методы)
в основном я ищу API, похожий на этот гипотетический API звоните
FSharpScriptRunner.RunInContext(string script);
пожалуйста, помогите.
-Маттиас
2 ответов
в настоящее время нет такого API, но вы можете довольно легко сделать что-то подобное в пару шагов:-
1) Используйте F# CodeDom, (FSharp.Компилятор.граф CodeDOM.dll) доступна в powerpack, для динамической компиляции вашего скрипта. Пакет питания содержит API для компиляции одного файла и позволяет добавлять ссылки на текущее приложение, предоставляя скрипту доступ к классам, свойствам и методам ведущего приложения.
2) В конце этап компиляции вы должны иметь динамическую сборку в памяти. Затем с помощью отражения можно создать динамический экземпляр объекта из сценария и выполнить его.
Почему бы вам просто не скомпилировать код F# в сборку, а затем ссылаться на это из вашего приложения c#?