是否可以在运行时在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
.
构建表达式树,编译并执行它
自己进行评估(这可能实际上最简单,取决于您的操作员等)