是否可以在运行时在 C# 中评估以下内容
我有一个包含 3 个属性的类(Field
、Operator
、Value
)
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/