Activator.CreateInstanceメソッドを使用すると、型情報を使って動的にインスタンスを作成することができます。 このメソッドではインスタンスを生成する際、コンストラクタに渡す引数を指定することができます。 コンストラクタに渡す引数はobject型の配列で指定します。 指定された引数に応じて適切なコンストラクタが自動的に呼び出されます。 当然、抽象クラスのインスタンスを作成しようとした場合や、引数と一致するコンストラクタがない場合は例外がスローされます。

Activator.CreateInstanceを使って型情報からインスタンスを作成する
Imports System
Imports System.Reflection

Class C
  Private f As Integer

  Public Sub New()
    Me.f = 0
  End Sub

  Public Sub New(ByVal f As Integer)
    Me.f = f
  End Sub

  Public Overrides Function ToString() As String
    Return String.Format("f = {0}", f)
  End Function
End Class

Class Sample
  Shared Sub Main()
    Dim inst As Object

    ' デフォルト(引数なし)のコンストラクタを使ってクラスCのインスタンスを作成する
    inst = Activator.CreateInstance(GetType(C))

    Console.WriteLine(inst)

    ' Integer型の引数を1つとるコンストラクタを使ってクラスCのインスタンスを作成する
    Dim args As Object() = New Object() {42}

    inst = Activator.CreateInstance(GetType(C), BindingFlags.CreateInstance, Nothing, args, Nothing)

    Console.WriteLine(inst)
  End Sub
End Class
実行結果
f = 0
f = 42