.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Reflection;
using System.Globalization;


public class Foo
{
    public Foo(string a = null, string b = null)
    {
      Console.WriteLine("Foo called with a = " + (a ?? "<null>") + " and b = " + (b ?? "<null>"));
    }
}

public class Program
{
	public static void Main()
	{
		var bf = BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.Instance | BindingFlags.OptionalParamBinding;
		
		Activator.CreateInstance(typeof(Foo), bf, null, new object [] { }, CultureInfo.CurrentCulture);
		Activator.CreateInstance(typeof(Foo), bf, null, new object [] { "Foo" }, CultureInfo.CurrentCulture);
		Activator.CreateInstance(typeof(Foo), bf, null, new object [] { "Foo", "Bar" }, CultureInfo.CurrentCulture);
	}
}
;