Quote Originally Posted by grudzio
If You want something more flexible, You can use class objects to create any object derived from TClass1. But it requires that all constructors have same list of parameters.
Remember that constructor must be virtual in TClass1, and overridden in TClass2 and other descendants then. Otherwise classType.Create always calls TClass1 constructor. As a side effect, compiler will also check then that Create "signatures" are matching in both classes (you can override only existing proc..).