2017-06-08 61 views
0

我正在检查可能发生变化的条件,因此希望在字符串中构建它们,然后将该字符串作为C#运行。以C#执行字符串#

//string conditionToCheck = user.Userdetail.Age > 18 
string conditionToCheck = "user." + condition.Table + "." + condition.Column + " " + condition.Operator + " " + condition.Value; 
if(conditionToCheck) 
{ 
    ConditionsMet = true; 
} 

有没有办法将conditionToCheck转换成C#?


背景

我允许用户通过选择一个表来创造条件,它是柱,然后分配和> < ==和一个值的运算符。

由于用户可以选择DB中任何表的任何列,我需要代码来检查处理任何事情的条件。

+1

你也许可以得到通过反射操作数的值,但这确实需要一种不同的方法。 **这是[XY问题]的反弹(https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你究竟遇到什么问题?试图用这个解决问题?为什么?** – cubrr

+0

C#不适合这种编程风格。去LISP。 – i486

+0

'user'是什么类型?可以有多少个不同的表和列? – cubrr

回答

0

是的,最好的解决方案可能是使用CodeDOM来动态编译C#代码。之后,您可以使用反射动态加载并执行编译后的程序集,并从评估中获取结果。但我不确定这是否是针对您问题的最佳解决方案。

你可以找到一个例子here