c#中的表达式树

本文关键字:表达式 | 更新日期: 2023-09-27 18:19:14

我如何将其转换为表达式树或使用linq,以便我可以根据这些表达式层次结构编写函数?

我已经看到了这个库,但我不确定我在正确的路径https://csharpeval.codeplex.com/wikipage?title=Usage&referringTitle=Documentation

 max(avg(high1:3),avg(low1:3)) - min(avg(high1:3),avg(low1:3))

c#中的表达式树

在运行时编译和执行代码总是有点挑战性。你提到的库只是一种方法。

你可以使用Roslyn,它是由微软和c#团队在c# 6.0和Visual Studio 2015中附带的。你无法想象它有多强大。以下是一些示例和演练:

https://github.com/dotnet/roslyn/wiki/Samples-and-Walkthrouli

和其他一些介绍:

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));