如何使用Type.GetMethod()来获取具有lambda参数的方法?我试图使用这个来获取像Func这样的参数的Queryable.Any方法:
typeof(Queryable).GetMethod("Any", new Type[]{typeof(Func<ObjType, bool>)})
但它一直返回null。
答案 0 :(得分:6)
有四件事是错的:
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
方法。目前尚不清楚你将采取什么措施。