如何获取所有可能重载方法的签名?

时间:2015-02-04 21:03:52

标签: c# reflection

我想获得一个对象数组,其中包含类中方法的所有可能的重载方法签名。例如,如果我们有:

public class SomeClass {
    ...
    public void SomeMethod() { ... }
    public void SomeMethod(int i) { ... }
    public void SomeMethod(string s) { ... }
}

如何查找所有可能的参数信息?我尝试使用:

MethodInfo method = type.GetMethod(methodName);
ParameterInfo[] possibleParameterInfos = method.GetParameters();
foreach (ParameterInfo possibleParameterInfo in possibleParameterInfos)
{
    Console.WriteLine(possibleParameterInfo.ParameterType);
}

但我没有得到我想要的东西。

1 个答案:

答案 0 :(得分:3)

您希望GetMethods不是GetMethod

MethodInfo[] methods = type.GetMethods()
                           .Where(x => x.Name == "SomeMethod")
                           .ToArray();

然后,您可以在每个GetParameters上致电MethodInfo以获取每种方法的签名。

foreach(var mi in methods)
{
    foreach(var p in mi.GetParameters())
    {
        Console.Write(p.ParameterType + ",");
    }
    Console.WriteLine();
}