UnderlyingSystemType何时与当前Type实例不同

时间:2012-06-27 13:16:54

标签: c# .net clr base-class-library

System.Type包含UnderlyingSystemType属性。 Msdn states表示:

  

表示公共语言运行库提供的类型   代表这种类型。

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

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

1 个答案:

答案 0 :(得分:6)

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

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

因此,在orindary UnderlyingSystemType的情况下,属性RuntimeType将返回Type属性相等的值,在覆盖实现的情况下,相反,(这是为了影响重新感知行为,但我重复我个人之前从未这样做过,会返回用户定义的类型值。

编辑

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

When is a Type not a Type?