Существует несколько способов создать объект определенного типа «на лету», один из которых:
// determine type here
var type = typeof(MyClass);
// create an object of the type
var obj = (MyClass)Activator.CreateInstance(type);
И вы получите экземпляр MyClass в obj.
Другой способ - использовать отражение:
// get type information
var type = typeof(MyClass);
// get public constructors
var ctors = type.GetConstructors(BindingFlags.Public);
// invoke the first public constructor with no parameters.
var obj = ctors[0].Invoke(new object[] { });
И из одного из возвращаемого ConstructorInfo вы можете «Invoke ()» с аргументами и возвращать экземпляр класса, как если бы вы использовали «новый» оператор.