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

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

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

Class C
  Public Sub New(ByVal x As Integer)
  End Sub

  Public Sub New(ByVal x As String, ByVal y As Integer)
  End Sub

  Public Sub New()
  End Sub
End Class

Class Sample
  Shared Sub Main()
    Dim t As Type = GetType(C)

    ' Integer型の引数を一つとるコンストラクタを取得する
    Dim ctor1 As ConstructorInfo = t.GetConstructor(New Type() {GetType(Integer)})

    ' String型とInteger型の引数をとるコンストラクタを取得する
    Dim ctor2 As ConstructorInfo = t.GetConstructor(New Type() {GetType(String), GetType(Integer)})

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

    Console.WriteLine(ctor1)
    Console.WriteLine(ctor2)
    Console.WriteLine(ctor3)
  End Sub
End Class
実行結果
Void .ctor(Int32)
Void .ctor(String, Int32)
Void .ctor()