0

情况如下:

在项目中

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

4

3 回答 3

1

两种选择:

  • 你可以打电话typeof(X2).GetMethods(),然后过滤掉名字错误的人。这有时比调用GetMethod()提供确切数据更容易。
  • 您可以使用在对 的调用中Type.MakeByRefType指定参数类型。因此,在这种情况下,您将使用(假设您想要显示的第二种方法):refType.GetMethod()

    MethodInfo method = typeof(X2).GetMethod
        ("GetName", new [] { typeof(string), typeof(X1).MakeByRefType() });
    
于 2010-06-27T06:44:43.120 回答
0
var method1 = typeof(X2).GetMethod("GetName", new[] { typeof(string) });
var method2 = typeof(X2).GetMethod("GetName", new[] { typeof(string), typeof(X1).MakeByRefType() });
于 2010-06-27T06:47:33.433 回答
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));
    }
}
于 2010-06-27T07:16:14.033 回答