在c#应用程序(主机)的内部(和上下文中)运行f#脚本是否容易?
使用'in the context',我的意思是以下内容应该是正确的:
- 没有单独的进程来执行脚本
- 从f#脚本访问宿主应用程序的静态内容(类,属性,方法)
基本上我正在寻找一个类似于这个假设的API调用的API
FSharpScriptRunner.RunInContext(string script);
请帮助。
马提亚
目前还没有这样的api,但您可以很容易地通过几个步骤完成类似的操作:-
1)使用powerpack中提供的f# CodeDom (FSharp.Compiler.CodeDom.dll)来动态编译脚本。power pack包含一些api,可以编译单个文件,并允许您向当前应用程序添加引用,从而使脚本能够访问宿主应用程序的类、属性和方法。
2)在编译阶段结束时,内存中应该有一个动态程序集。然后,您可以使用反射从脚本创建对象的动态实例并执行它。
你为什么不把f#代码编译成一个程序集,然后从你的c#应用程序中引用它呢?