C#动态编译和代码生成

时间:2012-03-23 22:53:11

标签: c# .net dynamic compilation

我允许用户输入具有代表单行c#复杂运算符的唯一键的字符串(一行代码如' 2 +(a - (x&amp;&amp; y?1:7)) '。运营商可以使用Nullable<bool>Nullable<double>个变量。 一开始,我有Dictionary<string, object>个预定义的值。 用户可以使用此变量和标准c#运算符:+, - ,*,/,&amp;&amp;,||,!,(),&gt;,&gt; =,&lt;,&lt; =,==,!= ,?a:b,??。

我需要重用c#运算符优先级机制和编译错误,警告和消息(编译后输出)

  1. 如何编译输入字符串并获取错误消息?
  2. 如何在编译之前预定义在字符串中使用的变量(生成像var x = new Nullable<bool>(true);之类的代码或其他东西)?
  3. 是否有可能以俄语收到错误消息?
  4. 我可以存储编译结果以提高性能(函数会多次调用)?

1 个答案:

答案 0 :(得分:2)

通常,您使用表达式解析器(例如NCalc)来执行此操作。它们通常具有相当容易适应您的要求的API。

  

是否有可能以俄语收到错误消息?

如果使用现有库,这可能是您最难的要求。但是,可以修改NCalc或其他开源表达式库解析器之一以提供俄语错误消息。