Как запустить скрипт F # в контексте приложения C # - PullRequest
7 голосов
/ 28 июля 2011

Легко ли запустить скрипт F # изнутри (и в контексте) приложения C # (хост).

С 'в контексте' я имею в виду следующее должно быть верно:

  • нет отдельного процесса для выполнения скрипта
  • доступ из сценария F # к статическому содержимому хост-приложения (классы, свойства, методы)

В основном я ищу API, похожий на этот гипотетический вызов API

FSharpScriptRunner.RunInContext(string script);

Пожалуйста, помогите.

-Matthias

Ответы [ 2 ]

9 голосов
/ 28 июля 2011

В настоящее время нет такого API, но вы можете довольно легко сделать что-то похожее за пару шагов: -

1) Используйте F # CodeDom (FSharp.Compiler.CodeDom.dll), доступный в PowerPack, для динамической компиляции вашего скрипта. Блок питания содержит apis для компиляции одного файла и позволяет вам добавлять ссылки на ваше текущее приложение, что дает сценарию доступ к классам, свойствам и методам хост-приложения.

2) В конце этапа компиляции у вас должна быть динамическая сборка в памяти. Затем вы можете использовать отражение, чтобы создать динамический экземпляр объекта из вашего скрипта и выполнить его.

2 голосов
/ 28 июля 2011

Почему бы вам просто не скомпилировать код F # в сборку, а затем ссылаться на него из своего приложения C #?

...