Das ist keine Rekursion, das ist das Factory Pattern.
du musst die Datendefinition auf die Hauptklasse machen. Dann kannst du diese Referenz mit einer abgeleiteten Klasse erzeugen.
Alternative: du benutzt ein Interface, dass alle Klassen, für die eine Instanz geliefert werden soll, benutzen.