如何在C#Application的上下文中运行F#脚本

时间:2011-07-28 13:13:34

标签: c# f# f#-scripting

是否可以从C#应用程序(主机)的内部(以及上下文)中运行F#脚本。

对于'在上下文中',我的意思是以下应该是真的:

  • 没有单独的执行脚本的过程
  • 从F#脚本访问主机应用程序的静态内容(类,属性,方法)

基本上我正在寻找类似于这个假设的API调用的API

FSharpScriptRunner.RunInContext(string script);

请帮忙。

-Matthias

2 个答案:

答案 0 :(得分:9)

目前还没有这样的api,但你可以通过几个步骤很容易地做类似的事情: -

1)使用powerpack中提供的F#CodeDom(FSharp.Compiler.CodeDom.dll)动态编译脚本。 power pack包含用于编译单个文件的api,并允许您添加对当前应用程序的引用,从而使脚本可以访问主机应用程序的类,属性和方法。

2)在编译阶段结束时,你应该在内存中有一个动态程序集。然后,您可以使用反射从脚本中创建对象的动态实例并执行它。

答案 1 :(得分:2)

为什么不将F#代码编译成程序集,然后从C#app引用它?