Метод ParseLambda выдает исключение - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь использовать метод ParseLmabda, доступный в библиотеке System.Linq.Dynami c. Когда я выполняю следующий простой пример,

using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic;
using System.Linq.Expressions;

namespace DynamicLINQDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            ParameterExpression x = Expression.Parameter(typeof(int), "x");
            ParameterExpression y = Expression.Parameter(typeof(int), "y");
            LambdaExpression e = System.Linq.Dynamic.DynamicExpression.ParseLambda(new ParameterExpression[] { x, y }, null, "(x + y) * 2");
        }
    }
}

, выдается следующее исключение.

System.TypeInitializationException: 'The type initializer for 'System.Linq.Dynamic.ExpressionParser' threw an exception.

Есть идеи, что я делаю неправильно?

1 Ответ

1 голос
/ 24 апреля 2020

При использовании System.Linq.Dynami c .Core это работает:

ParameterExpression x = Expression.Parameter(typeof(int), "x");
ParameterExpression y = Expression.Parameter(typeof(int), "y");
LambdaExpression e = DynamicExpressionParser.ParseLambda(new [] { x, y }, null, "(x + y) * 2");

var c = e.Compile();
var result = c.DynamicInvoke(1, 2);
Console.WriteLine(result);
...