Souvent, c'est ton langage qui va te fournir des fonctionalités pour ca.
Si ton langage ne le fait pas lui-même, alors il faudra que tu fasses toi-même un système de RTTI.
Ca, c'est pour la version ultra générique (qui, dans le cas que tu proposes, risque de causer quelques soucis, puisque le constructeur de ta classe attend potentiellement des arguments).
Le plus souvent pour un cas de ce genre, on passe simplement par un pattern de factory. Soit ton système de RTTI enregistre directement toutes tes classes dans cette factory, soit c'est une étape spécifique à un sous-ensemble de tes classes.
---------------
last.fm