Type.GetMethod()を使用してラムダパラメーターを持つメソッドを取得するにはどうすればよいですか?これを使用して、FuncのようなパラメータのQueryable.Anyメソッドを取得しようとしています。
typeof(Queryable).GetMethod("Any", new Type[]{typeof(Func<ObjType, bool>)})
しかし、それはnullを返し続けます。
間違っていることが4つあります。
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
な方法が得られるはずです。それで何をするのかは明確ではありません。