有没有人知道是否可以将包含(测量单位)的f#引用表达式发送到F#CodeDOM(在codeplex powerpack中提供)以便即时编译?
我正在尝试实现的方案是拥有一个运行时组件,允许我在一些文本框中键入一个简单的表达式,然后将其发送到CodeDOM进行编译,或者直接发送到Fsc.exe。总的来说,我想在运行时利用F#编译器来编译一段代码(就像我在C#中使用C#CodeDOM提供程序一样),以便利用度量单位功能。这种事情有可能吗?
答案 0 :(得分:1)
F#PowerPack中的CodeDOM提供程序使用F#编译器编译生成的源代码,因此它支持整个F#语言,包括度量单位。用于表示代码的CodeDOM对象非常有限,并且它们没有直接表示度量单位的方法。但是,您可以使用CodeSnippetExpression,它允许您将任何文本(字符串)用作CodeDOM树的一部分(生成器只会将文本插入生成的源代码中)。
CodeSnippetExpression
或使用类似的类型(允许整个语句/类型/等)将用户输入的文本传递给CodeDom。fsc.exe
来完成的,这意味着用户需要安装F#编译器,并且应用程序需要运行其他应用程序的权限。您还在问题中提到了引文。引号是F#源代码的表示,但没有内置解析器可以从字符串(由用户输入)创建引用。如果您创建了这样的解析器(对于您的用户将要输入的字符串),那么您可以创建引用树并使用引号编译器PowerPack对其进行编译。