UnderlyingSystemType何时与当前Type实例不同

Ste*_*ven 20 .net c# clr base-class-library

System.Type包含一个UnderlyingSystemType属性.Msdn 表示:

指示表示此类型的公共语言运行库提供的类型.

在大多数情况下,此属性只返回当前Type实例.

我的问题是,在什么情况下这个属性不会返回当前Type实例本身.在这些情况下,当前Type实例和返回的底层系统类型将是什么类型?

Tig*_*ran 7

说实话,我从来没有自己做过,但我知道可以创建自己RuntimeType喜欢的指定类型的定义.

如果你注意到这个Type类是抽象的并且有很多抽象的成员.会发生什么是您的类型(无论它是什么)自动创建RuntimeType派生自Type类并为您的类型实现它.

因此,UnderlyingSystemType在orindary的情况下属性RuntimeType将返回Type属性相等的值,在重写实现的情况下,(这是为了影响relfection行为,但我重复我个人以前从未这样做过),将返回用户定义的类型值.

编辑

实际上,评论中提供的链接是一个很好的链接:

什么时候Type不是Type?