我想要使用反射返回正確的「Where」擴展方法,以便構建自定義表達式。我嘗試了幾種方法,但最接近我拋出一個異常: 「mscorlib.dll中發生類型'System.Reflection.AmbiguousMatchException'的未處理異常」如何爲「Where」擴展方法獲取正確的MethodInfo
我知道這是因爲有兩個Where方法定義在Enumrable類 - 但我怎麼能返回其只用短短的
Func<T, bool>.
謂我目前所面對的是Where方法:
var collectionType = typeof(TSub);
Type tIEnumerable = typeof(IEnumerable<>).MakeGenericType(collectionType);
MethodInfo methodInfo =
typeof(Enumerable)
.GetMethod("Where")
.MakeGenericMethod(collectionType);
我自己也嘗試(這一個回報null):
MethodInfo methodWhere = typeof(Enumerable).GetMethod("Where", new[] { typeof(TSub)});
和(也返回null)
MethodInfo methodWhere = typeof(Enumerable).GetMethod("Where", new[] { collectionType })
和(這個方法返回相同的曖昧除外)
MethodInfo methodWhere = typeof(Enumerable).GetMethod("Where", BindingFlags.Public | BindingFlags.Static)
任何人都可以在所有幫助嗎?
感謝
非常感謝,我認爲你是對的。這種方式可行,代碼少 - 再次感謝 – user3161050