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



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

我的问题是,在什么情况下此属性不会返回当前的Type实例本身。在那些情况下,当前Type实例将是哪种类型,返回的底层系统类型将是哪种类型?

最佳答案

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

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

因此,对于普通的UnderlyingSystemType,属性RuntimeType将返回相等的Type属性值,而在覆盖实现的情况下,(这是为了影响相对行为,但我个人之前从未重复过此操作)将返回用户定义的类型值。

编辑

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

When is a Type not a Type?

10-07 23:08