如何將此轉換爲表達式樹或使用linq,以便我可以在這些表達式層次上編寫函數庫?C#中的表達樹
我已經看到了這個庫,但我不知道我是正確的道路上https://csharpeval.codeplex.com/wikipage?title=Usage&referringTitle=Documentation
max(avg(high1:3),avg(low1:3)) - min(avg(high1:3),avg(low1:3))
如何將此轉換爲表達式樹或使用linq,以便我可以在這些表達式層次上編寫函數庫?C#中的表達樹
我已經看到了這個庫,但我不知道我是正確的道路上https://csharpeval.codeplex.com/wikipage?title=Usage&referringTitle=Documentation
max(avg(high1:3),avg(low1:3)) - min(avg(high1:3),avg(low1:3))
編譯並在運行時執行代碼始終是一個挑戰。 您提到的圖書館只是一種方式。
您可以使用由Microsoft和C#團隊隨C#6.0和Visual Studio 2015提供的Roslyn。你無法想象它有多強大。下面是一些示例和演練:
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可以簡單地有一些hing是這樣的:
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));
這似乎不是C# –