在项目中
public class X1
{
public string Name="X1";
}
public class X2
{
public string GetName(string name)
{
return "";
}
public string GetName(string name,ref X1 x1)
{
return "";
}
}
问题:
如何通过其他项目中的反射getmethd函数获取'GetName'MethodInfo
答案 0 :(得分:1)
两个选项:
typeof(X2).GetMethods()
然后过滤掉名称错误的人。这有时比调用提供确切数据的GetMethod()
更容易。您可以使用Type.MakeByRefType
在ref
的调用中指定Type.GetMethod()
参数类型。所以在这种情况下你会使用(假设你想要显示第二种方法):
MethodInfo method = typeof(X2).GetMethod
("GetName", new [] { typeof(string), typeof(X1).MakeByRefType() });
答案 1 :(得分:0)
var method1 = typeof(X2).GetMethod("GetName", new[] { typeof(string) });
var method2 = typeof(X2).GetMethod("GetName", new[] { typeof(string), typeof(X1).MakeByRefType() });
答案 2 :(得分:0)
你可以这样做
foreach (var mi in typeof(X2).GetMethods())
{
if (mi.Name.Equals("GetName"))
{
Console.WriteLine("Method Name : {0}", mi.Name);
var miPerms = mi.GetParameters();
if (miPerms.Count() > 0)
Console.WriteLine("Params : {0}", miPerms.Select(p => p.ParameterType + " " + p.Name).Aggregate((a, b) => a + "," + b));
}
}