System.Type
The abstract class Type, defined in the System namespace, is an abstraction of a .NET CLR type. Every .NET type, be it a .NET-provided type (from value types such as integers and enums to classes and interfaces) or a developer-defined type, has a corresponding unique Type value.
Tip
The ability to uniquely identify a type by means of a Type object is analogous to the COM idea of identifying the type of a component by means of its unique CLSID.
The canonical base class of any .NET type is System.Object. Object (or just object in C#) has built-in support for retrieving the Type associated with any object by calling its GetType() method:
public class Object
{
public Type GetType();
//Other methods
}Having GetType() present in object allows you to call it on any .NET object:
public class MyClass
{...}
int number = 0;
MyClass obj = new MyClass();
Type type1 = number.GetType();
Type type2 = obj.GetType();Different instances of the same type must return the same Type value:
int number1 = 1;
int number2 = 2;
Type type1 = number1.GetType();
Type type2 = number2.GetType();
Debug.Assert(type1
==
type2);The typeof operator allows you to retrieve the Type associated with a type directly, without instantiating an object of that type:
Type type1 = typeof(int); Type type2 = typeof(MyClass);
Type is your gateway to obtaining the metadata associated with a given type. To start, Type.ToString() returns the type’s name:
Type type = typeof(MyClass); string name = type.ToString(); Debug.Assert(name ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access