メソッドではオーバーロードによって同じ名前のメソッドが複数存在する場合があり、またコンストラクタでは名前を持たないため名前で区別することができません。 このようにオーバーロードが存在し、メンバ名だけでは特定のメンバを限定できない場合は、引数リストを指定することによって取得対象を限定することができます。

引数リストは次の例のようにTypeの配列で指定します。 引数がない場合は空の配列か、Type.EmptyTypesフィールドを指定します。 引数の型・数・順序のすべてに一致するものがなければnull/Nothingが返されます。

引数リストを指定して一致するコンストラクタを取得する
using System;
using System.Reflection;

class C {
  public C(int x) {}
  public C(string x, int y) {}
  public C() {}
}

class Sample {
  static void Main()
  {
    var t = typeof(C);

    // int型の引数を一つとるコンストラクタを取得する
    ConstructorInfo ctor1 = t.GetConstructor(new[] {typeof(int)});

    // string型とint型の引数をとるコンストラクタを取得する
    ConstructorInfo ctor2 = t.GetConstructor(new[] {typeof(string), typeof(int)});

    // 引数のないコンストラクタを取得する
    ConstructorInfo ctor3 = t.GetConstructor(Type.EmptyTypes);

    Console.WriteLine(ctor1);
    Console.WriteLine(ctor2);
    Console.WriteLine(ctor3);
  }
}
実行結果
Void .ctor(Int32)
Void .ctor(String, Int32)
Void .ctor()