Какой метод выражения использовать, чтобы получить обратно параметр? - PullRequest
2 голосов
/ 06 июня 2011

Простой вопрос. Я пытаюсь создать базовое лямбда-выражение, которое возвращает параметр.

(i, o) => o

У меня есть первая часть:

ParameterExpression p1 = Expression.Parameter(relationshipItems.ElementType, "i");
ParameterExpression p2 = Expression.Parameter(instanceEntities.ElementType, "o");

И последняя часть:

LambdaExpression lambda = Expression.Lambda(p2return, p1, p2);

Какой метод я использую, чтобы вернуть параметр, предположительно как UnaryExpression (p2return)?

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Просто установите тело в качестве второго параметра, p2.У вас уже есть ссылка.

var p1 = Expression.Parameter(relationshipItems.ElementType, "i");
var p2 = Expression.Parameter(instanceEntities.ElementType, "o");
var body = p2;
var lambda = Expression.Lambda(body, p1, p2);
0 голосов
/ 06 июня 2011

Если в качестве примера мы предполагаем, что p1 - это int, а p2 - строка, то это:

var p1=Expression.Parameter(typeof(int),"i");
var p2=Expression.Parameter(typeof(string),"o");

var lambda=Expression.Lambda(p2,p1,p2);
var function=lambda.Compile() as Func<int,string,string>;
var result=function(10,"hello");

сгенерирует функцию, которая возвращает "o".Лямбда вернет значение в последнем выражении своего тела, которое в приведенном выше примере является просто параметром p2.

...