1
我一直在閱讀這篇文章,而且這些文章看起來都與我已經非常接近的情況相符。我有一個類與以下方法:如何使用多種通用匹配方法獲取MethodInfo
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。
我確實讀過這篇文章,甚至試過他的代碼,它仍然爲我返回null。也許更基本的問題是弄清楚如何獲得正確的參數類型。 typeof(Expression <>)不起作用,並且typeof(表達式>)甚至不能編譯。 –
2013-03-28 17:13:54