System.Type
包含一个UnderlyingSystemType
属性。MSDN指出:
指示由公共语言运行时提供的表示此类型的类型。
在大多数情况下,此属性仅返回当前Type
实例。
我的问题是,在什么情况下这个属性不返回当前Type
实例本身。在这些情况下,当前Type
实例和返回的底层系统类型是什么类型?
System.Type
包含一个UnderlyingSystemType
属性。MSDN指出:
指示由公共语言运行时提供的表示此类型的类型。
在大多数情况下,此属性仅返回当前Type
实例。
我的问题是,在什么情况下这个属性不返回当前Type
实例本身。在这些情况下,当前Type
实例和返回的底层系统类型是什么类型?
老实说,我从来没有自己做过,但我知道可以创建自己RuntimeType
的指定类型的类似定义。
如果你注意到这个Type
类是抽象的并且有很多抽象成员。发生的情况是您的类型(无论它是什么)自动从类创建RuntimeType
派生并为您的类型实现它。Type
因此,UnderlyingSystemType
在普通情况下的属性RuntimeType
将返回Type
属性相等的值,而在覆盖实现的情况下,(那是为了影响反射行为,但我再说一遍,我个人以前从未这样做过),将返回用户定义的类型值。
编辑
实际上,家伙在评论中提供的链接是一个很好的链接: