gpt4 book ai didi

c# - 仅使用反射通过类型参数区分泛型方法?

转载 作者:行者123 更新时间:2023-12-01 16:26:33 28 4
gpt4 key购买 nike

我正在尝试使用反射来获取类的特定 MethodInfo,但不确定如何区分以下两种方法:

public class Test
{
public IBar<T1> Foo<T1>();
public IBar<T1, T2> Foo<T1, T2>();
}

假设我知道类型参数的数量,如何获得对不同 Foo 方法的引用?仅调用 typeof(Test).GetMethod("Foo") 就会抛出异常,表明方法名称不明确,并且没有不同数量的参数需要检查。

最佳答案

您可以获取所有方法,然后根据通用参数计数过滤它们:

typeof(Test).GetMethods()
.First(x => x.Name == "Foo" && x.GetGenericArguments().Length == 2);

请注意,如果没有满足条件的方法,First 方法将抛出异常。您可以使用 FirstOrDefault 并检查 null相反,如果您想避免异常。

关于c# - 仅使用反射通过类型参数区分泛型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23893238/

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