如何获得所有可能的重载方法的签名?
How do I get the signatures of all possible overloaded methods?
我想获取一个对象数组,其中包含 class 中某个方法的所有可能的重载方法签名。例如,如果我们有:
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);
}
但我没有得到我想要的。
你想要 GetMethods
而不是 GetMethod
MethodInfo[] methods = type.GetMethods()
.Where(x => x.Name == "SomeMethod")
.ToArray();
然后您可以在每个 MethodInfo
上调用 GetParameters
以获取每个方法的签名。
foreach(var mi in methods)
{
foreach(var p in mi.GetParameters())
{
Console.Write(p.ParameterType + ",");
}
Console.WriteLine();
}
我想获取一个对象数组,其中包含 class 中某个方法的所有可能的重载方法签名。例如,如果我们有:
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);
}
但我没有得到我想要的。
你想要 GetMethods
而不是 GetMethod
MethodInfo[] methods = type.GetMethods()
.Where(x => x.Name == "SomeMethod")
.ToArray();
然后您可以在每个 MethodInfo
上调用 GetParameters
以获取每个方法的签名。
foreach(var mi in methods)
{
foreach(var p in mi.GetParameters())
{
Console.Write(p.ParameterType + ",");
}
Console.WriteLine();
}