c# - eval(string) 到 C# 代码

标签 c# runtime evaluation

是否可以在运行时在 C# 中评估以下内容

我有一个包含 3 个属性的类(FieldOperatorValue)

 rule.Field;
 rule.Operator;
 rule.Value;

这是我的规则类...

现在我有一个循环

foreach(item in items)
   {
       // here I want to create a dynamic expression to evaluate at runtime
       // something like
       if (item.[rule.field] [rule.operator] [rule.value])
           { do work }
   }

我只是不知道语法,或者如果它在 C# 中可能,我知道它在 JS 中是可能的,但那不是编译语言。

更新

本质上,我想要一种方法来eval(stringCode) 或更好的更受支持的方法。

最佳答案

不,C# 不直接支持这样的东西。

最接近的选项是:

  • 创建完整有效的 C# 程序并使用 CSharpCodeProvider 对其进行动态编译.
  • 构建一个 expression tree , 编译并执行
  • 自己进行评估(这实际上可能是最简单的,具体取决于您的运营商等)

关于c# - eval(string) 到 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1207809/

相关文章:

c# - 条件 xml 序列化

c++ - 具有不同 C/C++ 运行时库的 exe 和 dll 之间的接口(interface)

scheme - Lisp/方案 : Progn vs And

search-engine - 如何计算 MRR @n?

c# - 如何在c#中使用System.Net.WebRequest设置用户代理

c# - 欧文通话时长

java - 如何在不创建新数组的情况下减小数组大小?

java - 确定 Java 泛型的运行时类型

javascript - 使用 "new Function(...)"的安全考虑(在渲染期间,表达式来 self 的 Javascript 源)

c# - 使用C#计算PDF文档中减号的数量