Это вопрос с точки зрения внутренних возможностей компилятора.
Меня интересуют обобщения, а не шаблоны (C ++), поэтому я пометил вопрос с помощью C #. Не Java, потому что AFAIK дженерики в обоих языках отличаются в реализации.
Когда я смотрю на языки без обобщений, это довольно просто, вы можете проверить определение класса, добавить его в иерархию и все.
Но что делать с универсальным классом и, что более важно, как обрабатывать ссылки на него? Как убедиться, что статические поля являются единичными для каждого экземпляра (т.е. каждый раз, когда общие параметры разрешаются).
Допустим, я вижу звонок:
var x = new Foo<Bar>();
Добавить новый Foo_Bar
класс в иерархию?
Обновление: пока я нашел только 2 соответствующих сообщения, однако даже они не вдавались в подробности в смысле «как сделать это самостоятельно»: