В С# общая функция или класс осведомлены о типах ее общих параметров. Это означает, что доступна информация о динамическом типе, например is
или as
(в отличие от Java, где это не так).
Мне любопытно, как компилятор предоставляет эту информацию типа общим методам? Для классов я могу представить, что экземпляры могут просто иметь указатель на тип, но для общих функций я не уверен, возможно, только скрытый параметр?
Если дженерики сохраняются на уровне IL, и я считаю, что это так, то я хотел бы знать, как это делается на этом уровне.