Подтвердить что ты не робот

Когда тип UnderlyingSystemType отличается от текущего экземпляра экземпляра

System.Type содержит свойство UnderlyingSystemType. Msdn указывает, что он:

Указывает тип, предоставляемый общим языком выполнения, который представляет этот тип.

В большинстве случаев это свойство просто возвращает текущий экземпляр Type.

Мой вопрос в том, в каких обстоятельствах это свойство не возвращает текущий экземпляр Type. И в таких случаях какой тип будет текущим экземпляром Type и возвращаемым базовым типом системы будет?

4b9b3361

Ответ 1

Честно говоря, я никогда не делал этого сам, но я знаю, что можно создать собственное определение RuntimeType вашего указанного типа.

Если вы заметили, что класс Type является абстрактным и имеет много абстрактных memebers. Случается, что ваш тип (независимо от этого) автоматически создает RuntimeType из класса Type и реализует его для вашего типа.

Таким образом, свойство UnderlyingSystemType в случае orindary RuntimeType будет возвращать Type свойство равное значение, в случае чрезмерной реализации, вместо этого (то есть для влияния на поведение при переходе, но я повторяю, что лично я никогда этого не делал раньше), вернет заданное пользователем значение типа.

EDIT

На самом деле ссылка, предоставленная ребятами в комментариях, является хорошей:

Когда тип не является типом?