2009-05-04 11 views
4

の値を取得します はどのようにラムダ式を考えるとラムダMemberExpression

Define(Expression<Func<T, int>> property) 

は次のように使用:

Define(x => x.Collection.Count) 

カウントの値を得るための最善の方法は何ですか? Expression Treeの簡単な方法はありますか?または、Reflectionを使ってTreeを解析してPropertyInfoとGetValue()を取得する必要がありますか?

答えて

4

はあなたのラムダに対応するデリゲートを取得するために使用することができます以下

var propDelegate = property.Compile(); 
var count = propDelegate(...); 

propDelegateはFunc<T, int>になり、あなたは型T.

+0

感謝の必要なオブジェクトを渡すことによって、それを呼び出すことができますデニス、それはうまくいった。元の例を示した作業コード:var propDelegate = property.Compile(); var count = propDelegate.DynamicInvoke(新しいオブジェクト[] {インスタンス}); – TechnoAg

+3

ここでのインスタンスは:sですか? – Rookian