如何实现用户生成的条件语句?

时间:2014-02-12 17:57:29

标签: c# linq conditional-statements

我有一个文本框,我希望用户在其中指定要在if语句中使用的条件表达式。例如,假设在我的代码中,我有int名为myVariable且有一些价值。然后用户输入“C#-parsable”表达式,例如

@myParameter < 20

或者甚至

@myParameter > 5 && @myParameter < 20

进入myTextBox。我想我的代码就像

ConditionalExpression cond = new ConditionalExpression(); 
cond.Expression = myTextBox.Text;   //Get the text from textbox.
cond.Parameters.Add("@myParameter",myVariable);   //use value of 'myVariable" at "@myParameter"

if (cond.Evaluate()){        //if cond evaluates to true
    //do stuff
}

我可以使用哪种类来实现字符串解析,或者我必须自己进行字符串解析,然后以某种方式利用System.Linq.Expressions中的ConditionalExpression类?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Roslyn API(可以在Nuget上找到)来编译此代码。 您可以使用包含该参数的对象作为会话主机对象,并使用SyntaxTree.ParseText从文本中编译条件。 确保为用户验证树,以免在系统上运行危险代码。 Roslyn很快将成为.NET框架的一部分,但现在它有一个Nuget包。