System.Type
contains a UnderlyingSystemType
property. Msdn states that it:
Indicates the type provided by the common language runtime that
represents this type.
In most cases, this property simply returns the current Type
instance.
My question is, in what circumstances does this property not return the current Type
instance itself. And in those cases, what sort of type will be the current Type
instance and the returned underlying system type be?
To be honest I never did it by myself, but I know that it is possible to create your own RuntimeType
like definition of your specified type.
If you notice the Type
class is abstract and has a lot of abstract memebers. What happens is that your type (whatever is it) automatically creates RuntimeType
derived from Type
class and implements it for your type.
So the property UnderlyingSystemType
in case of orindary RuntimeType
will return Type
property equal value, in case of overriden implementation, instead, (that is for influencing relfection behavior, but I repeat I personally never did this before), will return user-defined type value.
EDIT
Actually the link provided by guys in comments is a good one:
When is a Type not a Type?