如何将其转换为表达式树或使用linq,以便我可以在这些表达式层次结构上编写函数库?。
我见过这个图书馆,但我不确定我是否正确[{3}}
max(avg(high1:3),avg(low1:3)) - min(avg(high1:3),avg(low1:3))
答案 0 :(得分:1)
在运行时编译和执行代码总是有点挑战性。 你提到的图书馆只是一种方式。
您可以使用Microsoft的C#6.0和Visual Studio 2015附带的Roslyn以及C#团队。你无法想象它有多强大。以下是一些示例和演练:
https://github.com/dotnet/roslyn/wiki/Samples-and-Walkthroughs
以及其他一些介绍:
https://en.wikipedia.org/wiki/.NET_Compiler_Platform
以下是一些创建REPL的示例(类似于您想要的内容):
http://www.jayway.com/2015/05/09/using-roslyn-to-build-a-simple-c-interactive-script-engine/
使用Roslyn可以简单地做到这样:
var csScript =
string.Format(@"
var x = Math.Max(Math.Avg({0},3),Math.Avg(low1:3));
x;
", high1, low1);
//And this from the REPL
Console.WriteLine(CSharpScriptEngine.Execute(csScript));