我有一个文本框,我希望用户在其中指定要在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类?
感谢。
答案 0 :(得分:0)
您可以使用Roslyn API(可以在Nuget上找到)来编译此代码。 您可以使用包含该参数的对象作为会话主机对象,并使用SyntaxTree.ParseText从文本中编译条件。 确保为用户验证树,以免在系统上运行危险代码。 Roslyn很快将成为.NET框架的一部分,但现在它有一个Nuget包。