Prima di tutto chiediti se aumentare l'indirezione ti migliora la manutenibilità del codice. Altrimenti fanne a meno.

Dopo di che se la tua intenzione è fare qualcosa come

if (Tipo == 'a') istanzia tipo a
else if(tipo== 'b') istanzia tipo b

sappi che questo è contro la morale.

tendenzialmente dovresti avere una classe

class forma2D
{
metodo astratto che ritorna forma3d ESTRUDI(Versore v, double modulo);
}

quindi

class poligonochiuso : forma2D
{
forma3d ESTRUDI(Versore v, double modulo)
}

class cerchio : forma2D
{
forma3d ESTRUDI(Versore v, double modulo)
}

eccetera

Ciao.