如何使用Type.GetMethod()獲取帶有lambda參數的方法?我試圖讓一個像Func這樣的參數的Queryable.Any方法,使用這個:如何使用帶有lambda參數的typeof(object).GetMethod()
typeof(Queryable).GetMethod("Any", new Type[]{typeof(Func<ObjType, bool>)})
但它一直返回null。
如何使用Type.GetMethod()獲取帶有lambda參數的方法?我試圖讓一個像Func這樣的參數的Queryable.Any方法,使用這個:如何使用帶有lambda參數的typeof(object).GetMethod()
typeof(Queryable).GetMethod("Any", new Type[]{typeof(Func<ObjType, bool>)})
但它一直返回null。
有四件事情錯:
Queryable.Any
第一個參數 - 在IQueryable<T>
Func<ObjType, bool>
這是一個代表類型,而不是Expression<Func<ObjType, bool>>
,這是表達式樹型你想:
var generic = typeof(Queryable).GetMethods()
.Where(m => m.Name == "Any")
.Where(m => m.GetParameters().Length == 2)
.Single();
var constructed = generic.MakeGenericMethod(typeof(ObjType));
這應該讓你的相關Any
方法。目前還不清楚你將如何處理它。
謝謝,那確實得到它。是的,對不起,這不是最好的措辭問題。我正在嘗試爲動態任意查詢組合一個表達式。發現如何在這裏 - http://stackoverflow.com/questions/326321/how-do-i-create-this-expression-tree-in-c#326496感謝您的幫助! – NargothBond
您的問題應該與Any方法是擴展方法有關。 – Sign
檢查http://stackoverflow.com/questions/2314329/get-method-name-using-lambda-expression和http://stackoverflow.com/questions/273941/get-method-name-and-type-using- lambda表達式 –
[從方法引用C#獲取methodinfo]的可能重複(http://stackoverflow.com/questions/9382216/get-methodinfo-from-a-method-reference-c-sharp) – nawfal