gpt4 book ai didi

c# - 如何获取通用扩展方法的 MethodInfo?

转载 作者:可可西里 更新时间:2023-11-01 08:40:42 25 4
gpt4 key购买 nike

我有一个 IEnumerable<T> , 我想调用 Enumerable.Contains 反射法。我只是在努力使语法正确。这是我目前拥有的:

var containsMethod = typeof(Enumerable).GetMethod("Contains", 
new[] {
typeof(IEnumerable<T>),
typeof(T)
});

这只是返回一个 null。

获取 MethodInfo 的正确方法是什么? ?

最佳答案

What is the correct way to get the MethodInfo?

您必须找到通用 方法——不幸的是这有点麻烦——然后用适当的参数构造它。在这种情况下,您知道只有 2 个 Contains 重载,而您想要的重载有两个参数,因此您可以使用:

var method = typeof(Enumerable).GetMethods()
.Where(m => m.Name == "Contains")
.Single(m => m.GetParameters().Length == 2)
.MakeGenericMethod(typeof(T));

然后您应该能够适本地调用它。

关于c# - 如何获取通用扩展方法的 MethodInfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17570910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com