私はこれに関する記事を一日中読んでいますが、どれも私が得た状況に十分に一致していないようです. 次のメソッドを持つクラスがあります。
IQueryable<TBusinessContract> Query<TBusinessContract>(
Expression<Func<TBusinessContract, bool>> condition, params string[] children )
where TBusinessContract : BusinessContract;
IQueryable<TSubType> Query<TSuperType, TSubType>(
Expression<Func<TSubType, bool>> condition, params string[] children )
where TSuperType : BusinessContract
where TSubType : BusinessContract;
最初のものの MethodInfo を取得したい。さまざまな組み合わせと順列を試してみましたが、null またはあいまいな一致例外が発生します。私は次のものを思いつきましたが、それは機能していますが、少しぎこちなく感じます。
MethodInfo queryMethod = Dal.GetType()
.GetMethods( BindingFlags.Public | BindingFlags.Instance )
.Where( mi => mi.Name == "Query" )
.Where( mi => mi.IsGenericMethod )
.Where( mi => mi.GetGenericArguments().Length == 1 )
.SingleOrDefault();
これは私ができる最善のことですか、それとも何か不足していますか? .NET 4.5 を使用しています。