21

System.Type包含一个UnderlyingSystemType属性。MSDN指出

指示由公共语言运行时提供的表示此类型的类型。

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

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

4

1 回答 1

7

老实说,我从来没有自己做过,但我知道可以创建自己RuntimeType的指定类型的类似定义。

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

因此,UnderlyingSystemType在普通情况下的属性RuntimeType将返回Type属性相等的值,而在覆盖实现的情况下,(那是为了影响反射行为,但我再说一遍,我个人以前从未这样做过),将返回用户定义的类型值。

编辑

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

什么时候类型不是类型?

于 2012-06-27T13:30:04.977 回答