docs.unity3d.com
    Show / Hide Table of Contents

    Class TypeExtensions

    Extension methods for Type objects

    Inheritance
    Object
    TypeExtensions
    Inherited Members
    Object.ToString()
    Object.Equals(Object)
    Object.Equals(Object, Object)
    Object.ReferenceEquals(Object, Object)
    Object.GetHashCode()
    Object.GetType()
    Object.MemberwiseClone()
    Namespace: Unity.XR.CoreUtils
    Syntax
    public static class TypeExtensions

    Methods

    GetAssignableTypes(Type, List<Type>, Func<Type, Boolean>)

    Add all types assignable to this one to a list, using an optional predicate test

    Declaration
    public static void GetAssignableTypes(this Type type, List<Type> list, Func<Type, bool> predicate = null)
    Parameters
    Type Name Description
    Type type

    The type to which assignable types will be matched

    List<Type> list

    The list to which assignable types will be appended

    Func<Type, Boolean> predicate

    Custom delegate to allow user filtering of type list. Return false to ignore given type

    GetAttribute<TAttribute>(Type, Boolean)

    Gets the first attribute of a given type.

    Declaration
    public static TAttribute GetAttribute<TAttribute>(this Type type, bool inherit = false)
        where TAttribute : Attribute
    Parameters
    Type Name Description
    Type type

    The type whose attribute will be returned

    Boolean inherit

    Whether to search this type's inheritance chain to find the attribute

    Returns
    Type Description
    TAttribute

    The first TAttribute found

    Type Parameters
    Name Description
    TAttribute

    Attribute type to return

    GetExtensionsOfClass(Type, List<Type>)

    Find all types that extend the given class type, and append them to a list If the input type is not an class type, no action is taken.

    Declaration
    public static void GetExtensionsOfClass(this Type type, List<Type> list)
    Parameters
    Type Name Description
    Type type

    The class type of whom list will be found

    List<Type> list

    The list to which extension types will be appended

    GetFieldInTypeOrBaseType(Type, String)

    Search by name through a fields of a type and its base types and return the field if one is found

    Declaration
    public static FieldInfo GetFieldInTypeOrBaseType(this Type type, string fieldName)
    Parameters
    Type Name Description
    Type type

    The type to search

    String fieldName

    The name of the field to search for

    Returns
    Type Description
    FieldInfo

    The field, if found

    GetFieldRecursively(Type, String, BindingFlags)

    Gets a specific field of the Type or any of its base Types

    Declaration
    public static FieldInfo GetFieldRecursively(this Type type, string name, BindingFlags bindingAttr)
    Parameters
    Type Name Description
    Type type

    The type which will be searched for fields

    String name

    Name of the field to get

    BindingFlags bindingAttr

    A bitmask specifying how the search is conducted

    Returns
    Type Description
    FieldInfo

    An object representing the field that matches the specified requirements, if found; otherwise, null

    GetFieldsRecursively(Type, List<FieldInfo>, BindingFlags)

    Gets all fields of the Type or any of its base Types

    Declaration
    public static void GetFieldsRecursively(this Type type, List<FieldInfo> fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
    Parameters
    Type Name Description
    Type type

    Type we are going to get fields on

    List<FieldInfo> fields

    A list to which all fields of this type will be added

    BindingFlags bindingAttr

    A bitmask specifying how the search is conducted

    GetFullNameWithGenericArguments(Type)

    Returns a human-readable, assembly qualified name for a class with its assembly qualified generic arguments filled in

    Declaration
    public static string GetFullNameWithGenericArguments(this Type type)
    Parameters
    Type Name Description
    Type type

    The type to get a name for

    Returns
    Type Description
    String

    The human-readable name

    GetGenericInterfaces(Type, Type, List<Type>)

    Search through all interfaces implemented by this type and, if any of them match the given generic interface append them to a list

    Declaration
    public static void GetGenericInterfaces(this Type type, Type genericInterface, List<Type> interfaces)
    Parameters
    Type Name Description
    Type type

    The type whose interfaces will be searched

    Type genericInterface

    The generic interface used to match implemented interfaces

    List<Type> interfaces

    The list to which generic interfaces will be appended

    GetImplementationsOfInterface(Type, List<Type>)

    Find all types that implement the given interface type, and append them to a list If the input type is not an interface type, no action is taken.

    Declaration
    public static void GetImplementationsOfInterface(this Type type, List<Type> list)
    Parameters
    Type Name Description
    Type type

    The interface type whose implementors will be found

    List<Type> list

    The list to which implementors will be appended

    GetInterfaceFieldsFromClasses(IEnumerable<Type>, List<FieldInfo>, List<Type>, BindingFlags)

    Gets the field info on a collection of classes that are from a collection of interfaces.

    Declaration
    public static void GetInterfaceFieldsFromClasses(this IEnumerable<Type> classes, List<FieldInfo> fields, List<Type> interfaceTypes, BindingFlags bindingAttr)
    Parameters
    Type Name Description
    IEnumerable<Type> classes

    Collection of classes to get fields from.

    List<FieldInfo> fields

    A list to which matching fields will be added

    List<Type> interfaceTypes

    Collection of interfaceTypes to check if field type implements any interface type.

    BindingFlags bindingAttr

    Binding flags of fields.

    GetMethodRecursively(Type, String, BindingFlags)

    Searches this type and all base types for a method by name

    Declaration
    public static MethodInfo GetMethodRecursively(this Type type, string name, BindingFlags bindingAttr)
    Parameters
    Type Name Description
    Type type

    The type being searched

    String name

    The name of the method for which to search

    BindingFlags bindingAttr

    BindingFlags passed to Type.GetMethod

    Returns
    Type Description
    MethodInfo

    MethodInfo for the first matching method found. Null if no method is found

    GetNameWithFullGenericArguments(Type)

    Returns a human-readable name for a class with its assembly qualified generic arguments filled in

    Declaration
    public static string GetNameWithFullGenericArguments(this Type type)
    Parameters
    Type Name Description
    Type type

    The type to get a name for

    Returns
    Type Description
    String

    The human-readable name

    GetNameWithGenericArguments(Type)

    Returns a human-readable name for a class with its generic arguments filled in

    Declaration
    public static string GetNameWithGenericArguments(this Type type)
    Parameters
    Type Name Description
    Type type

    The type to get a name for

    Returns
    Type Description
    String

    The human-readable name

    GetPropertiesRecursively(Type, List<PropertyInfo>, BindingFlags)

    Gets all properties of the Type or any of its base Types

    Declaration
    public static void GetPropertiesRecursively(this Type type, List<PropertyInfo> fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
    Parameters
    Type Name Description
    Type type

    Type we are going to get properties on

    List<PropertyInfo> fields

    A list to which all properties of this type will be added

    BindingFlags bindingAttr

    A bitmask specifying how the search is conducted

    GetPropertyRecursively(Type, String, BindingFlags)

    Gets a specific property of the Type or any of its base Types

    Declaration
    public static PropertyInfo GetPropertyRecursively(this Type type, string name, BindingFlags bindingAttr)
    Parameters
    Type Name Description
    Type type

    The type which will be searched for fields

    String name

    Name of the property to get

    BindingFlags bindingAttr

    A bitmask specifying how the search is conducted

    Returns
    Type Description
    PropertyInfo

    An object representing the field that matches the specified requirements, if found; otherwise, null

    IsAssignableFromOrSubclassOf(Type, Type)

    Tests if class type IsAssignableFrom or IsSubclassOf another type

    Declaration
    public static bool IsAssignableFromOrSubclassOf(this Type checkType, Type baseType)
    Parameters
    Type Name Description
    Type checkType

    type wanting to check

    Type baseType

    type wanting to check against

    Returns
    Type Description
    Boolean

    True if IsAssignableFrom or IsSubclassOf

    IsDefinedGetInheritedTypes<TAttribute>(Type, List<Type>)

    Returns an array of types from the current type back to the declaring type that includes an inherited attribute.

    Declaration
    public static void IsDefinedGetInheritedTypes<TAttribute>(this Type type, List<Type> types)
        where TAttribute : Attribute
    Parameters
    Type Name Description
    Type type

    Type that has the attribute or inherits the attribute.

    List<Type> types

    A list to which matching types will be added

    Type Parameters
    Name Description
    TAttribute

    Type of attribute we are checking if is defined.

    Back to top
    Terms of use
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023