【问题标题】:C# dynamic compilation and code generationC#动态编译和代码生成
【发布时间】:2012-03-23 22:53:11
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net dynamic compilation


    【解决方案1】:

    通常,您会使用表达式解析器(例如 NCalc)来执行此操作。他们通常有一个很容易适应您的要求的 API。

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多