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

2 つのオプション:

  • 呼び出しtypeof(X2).GetMethods()て、間違った名前のものを除外することができます。GetMethod()これは、正確なデータを提供するために呼び出すよりも簡単な場合があります。
  • の呼び出しでパラメータ タイプType.MakeByRefTypeを指定するために使用できます。したがって、この場合は次のようにします (表示されているメソッドの 2 番目が必要であると仮定します)。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 に答える