Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference or relationship between Type and TypeInfo?

I cannot fully understand when to use one or another. They are so similar that it's confusing me every now and them. When it comes to reflection, I don't know whether to use the plain Type or TypeInfo.

.NET Framework itself adds more confusion with things like assembly.DefinedTypes. It retrieves an IEnumerable<TypeInfo> where I supposed it would be of IEnumerable<Type>. Also, there is a typeInfo.AsType() method. What's the meaning of that? are they interchangeable?

Moreover, they have methods that are really similar.

It seems that TypeInfo is like a more powerful version of the classic Type. Am I wrong?

like image 477
SuperJMN Avatar asked Jun 08 '15 00:06

SuperJMN


1 Answers

From the MSDN docs:

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. In comparison, you can manipulate Type objects without necessarily requiring the runtime to load the assembly they reference.

So the Type provides a shallower representation of the object data, i.e, providing the name of the type as a string.

Where as TypeInfo provides a richer representation of the type including lists of members, implemented interfaces, and the base type.

The differences are explained in greater detail here.

like image 71
RagtimeWilly Avatar answered Nov 09 '22 08:11

RagtimeWilly