linq - Замена неуниверсального лямбда-выражения для общего лямбда-выражения - PullRequest
4 голосов
/ 13 мая 2009

У меня есть эта строка кода:

var predicate = Expression.Lambda<Func<TEntityType, bool>>(body, param);

где TEntityType - универсальный параметр.

Однако у меня нет доступных общих парм. У меня есть:

Type _EntityType;

Что такое неуниверсальный синтаксис для Expression.

Спасибо

1 Ответ

9 голосов
/ 13 мая 2009

Существует перегрузка для Expression.Lambda, которая принимает тип тела выражения, поэтому вам просто нужно динамически создать тип перед вызовом этой перегрузки.

type lambdaType = typeof(Func<,>).MakeGenericType(_EntityType, typeof(bool));

var predicate = Expression.Lambda(lambdaType, body, param);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...