【发布时间】:2017-07-18 20:58:02
【问题描述】:
有没有办法在 C# 中编译以下字符串
string linqExpression = "(seq) => seq.Average()" 使用 roslyn?
而不是这样做:
SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(@" using System;
using System.Linq;
public class RoslynLinq
{
public void Execute(int[] a)
{
Func<int[], double> func = (seq) => seq.Average();
Console.WriteLine(func(a));
}
}");
可以吗:
SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText("Func<int[], double> func = (seq) => seq.Select((x)=>x).Average()");
【问题讨论】:
-
是的,与编译任何其他表达式的方式相同。
-
我的意思是,而不是这样做: SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(@" using System; using System.Linq; public class RoslynLinq { public void Execute(int[] a) { Func
func = (seq) => seq.Average(); Console.WriteLine(func(a)); } }");我可以这样做:SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(“Func func = (seq) => seq.Select((x)=>x).Average()”);