# Sandbox.TypeDescription

Describes a type. We use this class to wrap and return `System.Type`'s that are safe to interact with.
            
Returned by [Sandbox.Internal.TypeLibrary](/api/Sandbox.Internal.TypeLibrary).

- Kind: class
- Namespace: `Sandbox`
- Assembly: `Sandbox.Reflection`
- Modifiers: sealed

## Properties

- [`Aliases`](/api/Sandbox.TypeDescription/Aliases)
- [`BaseType`](/api/Sandbox.TypeDescription/BaseType): The base type. This can return null if the type isn't in the type library!
- [`ClassName`](/api/Sandbox.TypeDescription/ClassName): A string representing this class name. Historically this was provided by [Library( classname )]. If no special name is provided, this will be type.Name.
- [`DeclaredMembers`](/api/Sandbox.TypeDescription/DeclaredMembers): Members (methods, properties, etc) declared by exactly this type, and not inherited.
- [`Description`](/api/Sandbox.TypeDescription/Description)
- [`Fields`](/api/Sandbox.TypeDescription/Fields): All fields on this type.
- [`FullName`](/api/Sandbox.TypeDescription/FullName): Full name of this type.
- [`GenericArguments`](/api/Sandbox.TypeDescription/GenericArguments): If we're a generic type this will return our generic parameters.
- [`Group`](/api/Sandbox.TypeDescription/Group)
- [`Icon`](/api/Sandbox.TypeDescription/Icon)
- [`Identity`](/api/Sandbox.TypeDescription/Identity): An integer that represents this type. Based off the class name.
- [`Interfaces`](/api/Sandbox.TypeDescription/Interfaces): If we implement any interfaces they will be here
- [`IsAbstract`](/api/Sandbox.TypeDescription/IsAbstract): Gets a value indicating whether the System.Type is abstract and must be overridden.
- [`IsClass`](/api/Sandbox.TypeDescription/IsClass): True if the target type is a class
- [`IsEnum`](/api/Sandbox.TypeDescription/IsEnum): True if the target type is an enum
- [`IsGenericType`](/api/Sandbox.TypeDescription/IsGenericType): True if we're a generic type
- [`IsInterface`](/api/Sandbox.TypeDescription/IsInterface): True if the target type is an interface
- [`IsStatic`](/api/Sandbox.TypeDescription/IsStatic): True if the target type is static
- [`IsValid`](/api/Sandbox.TypeDescription/IsValid): Whether the class is valid or not, i.e. whether the type still exists.
- [`IsValueType`](/api/Sandbox.TypeDescription/IsValueType): True if the target type is a value
- [`Members`](/api/Sandbox.TypeDescription/Members): All members (methods, properties, etc) of this type.
- [`Methods`](/api/Sandbox.TypeDescription/Methods): All methods of this type.
- [`Name`](/api/Sandbox.TypeDescription/Name): Name of this type.
- [`Namespace`](/api/Sandbox.TypeDescription/Namespace): Namespace of this type.
- [`Order`](/api/Sandbox.TypeDescription/Order)
- [`Properties`](/api/Sandbox.TypeDescription/Properties): All properties of this type.
- [`SourceFile`](/api/Sandbox.TypeDescription/SourceFile): The file containing this member
- [`SourceLine`](/api/Sandbox.TypeDescription/SourceLine): The line number of this member
- [`Tags`](/api/Sandbox.TypeDescription/Tags): Tags are set via the [Tag] attribute
- [`TargetType`](/api/Sandbox.TypeDescription/TargetType): The type this class describes.
- [`Title`](/api/Sandbox.TypeDescription/Title)

## Methods

- [`Create`](/api/Sandbox.TypeDescription/Create): Create an instance of this class, return it as a T. If it can't be cast to a T we won't create it and will return null.
- [`CreateGeneric`](/api/Sandbox.TypeDescription/CreateGeneric): Create an instance of this class using generic arguments We're going to assume you know what you're doing here and let it throw any exceptions it wants.
- [`GetAttribute`](/api/Sandbox.TypeDescription/GetAttribute): Returns the first attribute of given type, if any are present.
- [`GetAttributes`](/api/Sandbox.TypeDescription/GetAttributes): Returns all attributes of given type, if any are present.
- [`GetMethod`](/api/Sandbox.TypeDescription/GetMethod): Get a method by name (will not find static methods)
- [`GetProperty`](/api/Sandbox.TypeDescription/GetProperty): Get property by name (will not find static properties)
- [`GetStaticMethod`](/api/Sandbox.TypeDescription/GetStaticMethod): Get a method by name (will not find static methods)
- [`GetStaticProperty`](/api/Sandbox.TypeDescription/GetStaticProperty): Get static property by name
- [`GetStaticValue`](/api/Sandbox.TypeDescription/GetStaticValue): Get value by field or property name, and which type the member is declared to store (will not find static members)
- [`GetValue`](/api/Sandbox.TypeDescription/GetValue): Get value by field or property name (will not find static members)
- [`HasAttribute`](/api/Sandbox.TypeDescription/HasAttribute): Returns true if the class has this attribute
- [`HasTag`](/api/Sandbox.TypeDescription/HasTag): True if we have this tag.
- [`IsNamed`](/api/Sandbox.TypeDescription/IsNamed): Returns true if this is named the passed name, either through classname, target class name or an alias
- [`MakeGenericType`](/api/Sandbox.TypeDescription/MakeGenericType): For generic type definitions, create a type by substituting the given types for each type parameter. Returns null if any of the type arguments violate the generic constraints.
- [`PaintComponentIcon`](/api/Sandbox.SceneExtensions/PaintComponentIcon)
- [`SetStaticValue`](/api/Sandbox.TypeDescription/SetStaticValue): Set static value by field or property name
- [`SetValue`](/api/Sandbox.TypeDescription/SetValue): Set value by field or property name (will not set static members)
