Esta es la pregunta desde la perspectiva interna del compilador.
Estoy interesado en los genéricos, no en las plantillas (C ++), así que marqué la pregunta con C #. No Java, porque AFAIK los genéricos en ambos idiomas difieren en las implementaciones.
Cuando miro los idiomas sin genéricos, es bastante sencillo, puede validar la definición de clase, agregarla a la jerarquía y listo.
¿Pero qué hacer con la clase genérica y, lo que es más importante, cómo manejar las referencias a ella? Cómo asegurarse de que los campos estáticos sean singulares por instanciación (es decir, cada vez que se resuelven los parámetros genéricos).
Digamos que veo una llamada:
var x = new Foo<Bar>();
¿Agrego nueva Foo_Bar
clase a la jerarquía?
Actualización: hasta ahora solo encontré 2 publicaciones relevantes, sin embargo, incluso ellas no entran en muchos detalles en sentido "cómo hacerlo usted mismo":