It is important to note that using Activator.CreateInstance is slower than using the new keyword. This is because the runtime must perform a lookup, verify security permissions, and find the appropriate constructor through reflection.

// 4. From assembly-qualified name string typeName = "ActivatorDemo.Demo, ActivatorDemo"; Type t = Type.GetType(typeName); object obj4 = Activator.CreateInstance(t, "Assembly", 999); ((Demo)obj4).Show();

The .NET 4.6.1 Framework provides several activator classes:

: A comparison between Activator.CreateInstance , new() constraints in generics, and compiled Expression trees. 3. Evolution and Compatibility

private static Dictionary<Type, Func<object>> _cache = new Dictionary<Type, Func<object>>(); public static T Create<T>()