Esta é a questão da perspectiva interna do compilador.
Estou interessado em genéricos, não em modelos (C ++), por isso marquei a pergunta com C #. Não é Java, porque o AFAIK os genéricos nos dois idiomas diferem nas implementações.
Quando eu olho para idiomas sem genéricos, é bastante simples, você pode validar a definição de classe, adicioná-la à hierarquia e é isso.
Mas o que fazer com a classe genérica e, mais importante, como lidar com referências a ela? Como garantir que os campos estáticos sejam singulares por instanciações (ou seja, sempre que parâmetros genéricos forem resolvidos).
Digamos que eu recebo uma ligação:
var x = new Foo<Bar>();
Eu adiciono nova Foo_Bar
classe à hierarquia?
Atualização: Até agora encontrei apenas 2 posts relevantes, no entanto, mesmo eles não entram em muitos detalhes no sentido de "como fazer isso sozinho":