Есть ли способ скомпилировать следующую строку в C# string linqExpression = "(seq) => seq.Average()"
с использованием roslyn?Компиляция выражения Linq с использованием 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()");
Да, так же, как вы компилируете любое другое выражение. – SLaks
То, что я имел в виду, что, вместо того, чтобы сделать это: SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText (@» с использованием системы; использования System.Linq; общественного класс RoslynLinq { общественных недействительным Execute (INT [] а) { Func func = (seq) => seq.Average(); Console.WriteLine (func (a)); } } "); Можно ли: Синтаксис СинтаксисTree = CSharpSyntaxTree.ParseText ("Func func = (seq) => seq.Select ((x) => x) .Average()"); –
Aman