The new reflection API introduces the TypeInfo class:
https://docs.microsoft.com/en-us/dotnet/api/system.reflection.typeinfo
I can get a TypeInfo instance of a Type (say, a Car) by writing
TypeInfo typeInfo = typeof(Car).GetTypeInfo();
Now, what if I just have a TypeInfo instance? How do I get the Type it's referring to? Can I just write
Type type = typeInfo.GetType();
Or will this return a type that is equal to typeof(TypeInfo)?
Use Type. GetType to get the Type objects from an assembly that is already loaded.
To get a TypeInfo object from a Type object, use the IntrospectionExtensions. GetTypeInfo(Type) extension method. A TypeInfo object represents the type definition itself, whereas a Type object represents a reference to the type definition. Getting a TypeInfo object forces the assembly that contains that type to load.
C# String GetType() The C# GetType() method is used to get type of current object. It returns the instance of Type class which is used for reflection.
If you call typeInfo.GetType(), you will indeed get the execution-time type of the object that typeInfo refers to - so some concrete type derived from TypeInfo.
You want TypeInfo.AsType():
Returns the current type as a Type object.
So your code would be:
Type type = typeInfo.AsType();
Or, as noted in comments, something I'd never noticed: TypeInfo derives from Type! So just use:
Type type = typeInfo;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With