System.Type
包含UnderlyingSystemType
属性。 MSDN states表示:
在大多数情况下,此属性仅返回当前的Type
实例。
我的问题是,在什么情况下此属性不会返回当前的Type
实例本身。在那些情况下,当前Type
实例将是哪种类型,返回的底层系统类型将是哪种类型?
最佳答案
老实说,我从来没有一个人做过,但是我知道可以创建自己的RuntimeType
,例如指定类型的定义。
如果您注意到Type
类是抽象的,并且有很多抽象成员。发生的事情是您的类型(无论是什么类型)都会自动创建从RuntimeType
类派生的Type
并为您的类型实现它。
因此,对于普通的UnderlyingSystemType
,属性RuntimeType
将返回相等的Type
属性值,而在覆盖实现的情况下,(这是为了影响相对行为,但我个人之前从未重复过此操作)将返回用户定义的类型值。
编辑
实际上,在评论中,伙计们提供的链接是一个很好的链接:
When is a Type not a Type?