2016-03-29 2 views
-1

受け取るパラメータを返す式ツリーを作成する必要があります。e => e to expression tree

これは私が必要とするラムダですe => e式ツリーに変換してください。

アイデア?

ありがとうございました。

+4

すでに掲載ことを行うコードを。おめでとう、あなたは終わった。 – Servy

+0

私は表現木を使わなければなりません。私はそれが私が望むものを生成するラムダ式であることを知っています。 – Zuryx

+2

はい、しかし、あなたが与えるコードC#で式ツリーを記述する方法することができます(同じコードは、コンテキストに応じて、デリゲートまたはメソッド身体を書くことができます) –

答えて

3

このことを行います:lambda.ToString()

var param = Expression.Parameter(typeof(int), "e"); 
var body = param; 
var lambda = Expression.Lambda<Func<int, int>>(body, param); 

出力:あなたはeにタイプを与える必要があり

e => e 

を注(この場合には、それはint型です)。


編集前のノート:あなたが書いた何

e => eは)(Expression<T>として定義されている場合、それはある)、すでに実際に式ツリーです。ただし、ファクトリメソッドを使用してツリーを構築したいと思う可能性があります。

+0

おかげでロブはそれが心配:) – Zuryx

+0

をしたいまさにそれです'e => e'はすでに式です"議論は建設的です)。 – Rob

+0

ロブは、私は@Zuryxの口の中でいくつかの単語を入れて書き直し質問をしたん@Zuryx私は:) –

1

e => e。それでおしまい。

それはとても例えば、当然のことながら、入力する必要がありますintの場合はExpression<Func<int, int>> intTree = e => e;、文字列の場合はExpression<Func<string, string>> stringTree = e => e;などです。

は今、あなたは、ラムダから木を持っている、あなたはそれを調べたり、あなたがのために木たい他のものは何でもすることができます

Console.WriteLine(intTree.Parameters[0].Name); // "e" 
Console.WriteLine(intTree.CanReduce); // false 
Func<int, int> intIdentityFunction = intTree.Compile(); 
関連する問題