ConstructorInfoを使ってコンストラクタを呼び出し、インスタンスを作成・初期化するには、Invokeメソッドを呼び出します。 呼び出しに際してインスタンスを指定する必要がない点、作成されたインスタンスは戻り値として返される点を除けば、MethodInfo.Invokeメソッドと変わりありません。

ConstructorInfoを使ってコンストラクタを呼び出し、インスタンスを作成する
using System;
using System.Reflection;

class C {
  private string str = "Hello, world!";

  public C()
  {
  }

  public C(string str)
  {
    this.str = str;
  }

  public override string ToString()
  {
    return str;
  }
}

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

    object inst;

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

    // コンストラクタを呼び出してインスタンスを作成する
    inst = c1.Invoke(null);

    Console.WriteLine(inst);

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

    // コンストラクタを呼び出してインスタンスを作成する
    inst = c2.Invoke(new object[] {"Hello, instance!"});

    Console.WriteLine(inst);
  }
}
実行結果
Hello, world!
Hello, instance!

コンストラクタ呼び出しの結果例外が発生した場合、例外はTargetInvocationExceptionにラップされた上でスローされます。 TargetInvocationExceptionから実際にスローされた例外を取得する方法については§.TargetInvocationException、TargetInvocationExceptionにラップせずにスローさせる方法については§.BindingFlags.DoNotWrapExceptionsを参照してください。