我想获得一个对象数组,其中包含类中方法的所有可能的重载方法签名。例如,如果我们有:
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);
}
但我没有得到我想要的东西。
答案 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();
}