2011-06-06 20 views
2

簡單的問題。我正在嘗試創建返回參數的基本lambda表達式。用什麼表達方法來取回參數?

(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) ?

回答

3

只需將主體設置爲第二個參數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

謝謝。我想你會增加額外的body = p2賦值,因爲它並不是真的需要。實際上之前有過這個解決方案,但是我在.Lambda方法中弄亂了順序,並盲目地轉向另一個方向。感謝您的重申。 – user365004 2011-06-06 10:01:49

0

如果,例如起見,我們假設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」的功能。 lambda將返回其正文中最後一個表達式中的值,在上面的示例中它只是參數p2。

相關問題