メソッドではオーバーロードによって同じ名前のメソッドが複数存在する場合があり、また特にコンストラクタのオーバーロードではコンストラクタは名前を持たないため、名前だけでなく引数リストを用いて対象のオーバーロードを指定する必要があります。

例えばGetMethodの場合、名前のみでメソッドを取得しようとしたときにオーバーロードが複数存在する場合は、例外AmbiguousMatchExceptionがスローされます。

このようにメンバ名だけでは単一のメンバを限定できない場合は、引数リストを指定することによって取得対象を限定することができます。

引数リストは次の例のように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()

ジェネリックメソッドなど、型パラメータによってメンバを限定する必要がある場合については§.型パラメータを指定した取得 (ジェネリック型のメソッド/ジェネリックメソッドの取得)を参照してください。