收录日期:2019/08/18 17:29:02 时间:2016-01-08 23:45:22 标签:c#,reflection,dynamic

What is the state of dynamic code evaluation in C#? For a very advanced feature of an app I'm working on, I'd like the users to be able to enter a line of C# code that should evaluate to a boolean.

Something like:

DateTime.Now.Hours > 12 && DateTime.Now.Hours < 14

I want to dynamically eval this string and capture the result as a boolean.

I tried Microsoft.JScript.Eval.JScriptEvaluate, and this worked, but it's technically deprecated and it only works with Javascript (not ideal, but workable). Additionally, I'd like to be able to push objects into the script engine so that they can be used in the evaluation.

Some resources I find mentioned dynamically compiling assemblies, but this is more overhead than I think I want to deal with.

So, what is the state of dynamic script evaluation in C#? Is it possible, or am I out of luck?