IQueryable <T>ソースがあり、IQueryable <T> .Count()を動的に呼び出したい。
したがって、IQueryableで宣言されたCountメソッドのMethodInfoが必要です。
これは、msdnからの(IQueryable <>内の)署名です。
public static int Count<TSource>(
this IQueryable<TSource> source
)
これは私がどこまで得たかです:
Expression expr; //this is expression which holds my IQueryable<T>
MethodInfo mi = expr.Type.GetMethod("Count", BindingFlags.Static | BindingFlags.Public, null, new[] { expr.Type }, null);
しかし、私のmiは常にnullです。
私も試しました:
mi = typeof(IQueryable<>).GetMethod("Count", BindingFlags.Static | BindingFlags.Public, null, new[] { expr.Type }, null);
しかし、再びnull。
私の最終的な目標は次のとおりです。
Expression.Call(mi, expr);
更新:これは私がSumExtensionメソッドを取得する方法です:
MethodInfo sum = typeof(Queryable).GetMethod("Sum", BindingFlags.Static | BindingFlags.Public, null, new[] { typeof(IQueryable<decimal>) }, null);
これは機能しますが、このSumメソッドはジェネリックではありません。静的ですが。