以编程方式编译和运行C#代码

时间:2009-07-09 13:05:50

标签: c#

我有一个C#应用程序,我想运行一个在文本中定义的函数来获取A类的一个参数并返回一个double。

参数“A”将是一些结构化数据,该函数将是A上的公式。

(想象一下A有一个属性num1,num2,一个公式定义为返回平均值,另一个公式定义为返回num1 * 2)。

因此,我想从文本源加载我的函数定义,以某种方式编译它们,然后执行它们。

就代码的结构而言,我认为我可以将函数体注入任意类的成员函数,或者如果我可以编译委托然后执行它传递参数上下文也足够了。

这是怎么回事?

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

我建议使用表达式解析器,您可以在其中输入类似excel的表达式,并包含所有基本函数(统计,字符串操作,数学/触发)。我已经使用CalcEngine来获得类似的要求并获得了良好的结果。您可以使用自定义函数扩展它。

答案 2 :(得分:0)

你可能想看一下c#代码dom。您可以使用它来动态编写和编译C#代码,然后执行它。

请注意这是一个非常高风险的操作,所以要小心。仍然是它在环境中的强大功能。

答案 3 :(得分:0)

有关于如何编译C#code here

的文档

一旦你编译好了你将需要使用反射来调用方法(假设它是静态的)

如果您想将其注入现有的LCG类,则需要使用IL。

答案 4 :(得分:0)

另一种方法是使用DynamicMethod类。虽然这需要IL的知识才能这样做。

我认为在运行时编译会更快。