如何获取MethodInfo的通用扩展方法?
我有一个IEnumerable
,我想通过reflection调用Enumerable.Contains
方法。 我只是在努力使语法正确。 这是我现在拥有的:
var containsMethod = typeof(Enumerable).GetMethod("Contains", new[] { typeof(IEnumerable), typeof(T) });
这只是返回null。
获取MethodInfo
的正确方法是什么?
获取MethodInfo的正确方法是什么?
你必须找到generics方法 – 不幸的是有点痛苦 – 然后使用适当的参数构造它。 在这种情况下,您知道只有2个Contains
重载,而您想要的包含两个参数,因此您可以使用:
var method = typeof(Enumerable).GetMethods() .Where(m => m.Name == "Contains") .Single(m => m.GetParameters().Length == 2) .MakeGenericMethod(typeof(T));
然后,您应该能够适当地调用它。