Class TypeExtensions
Various extension methods for type reflection.
Inherited Members
Namespace: DotNext.Reflection
Assembly: DotNext.dll
Syntax
public static class TypeExtensions
Methods
| Edit this page View SourceCast(Type, object?)
Casts an object to the class, value type or interface.
Declaration
public static object? Cast(this Type type, object? obj)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type cast result. |
| object | obj | The object to be cast. |
Returns
| Type | Description |
|---|---|
| object |
Exceptions
| Type | Condition |
|---|---|
| InvalidCastException | If the object is not null and is not assignable to the |
Devirtualize(Type, MethodInfo)
Returns method that overrides the specified method.
Declaration
public static MethodInfo? Devirtualize(this Type type, MethodInfo abstractMethod)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type that contains overridden method. |
| MethodInfo | abstractMethod | The abstract method definition. |
Returns
| Type | Description |
|---|---|
| MethodInfo | The method that overrides |
GetBaseTypes(Type, bool, bool)
Returns read-only collection of base types and, optionally, all implemented interfaces.
Declaration
public static IEnumerable<Type> GetBaseTypes(this Type type, bool includeTopLevel = false, bool includeInterfaces = false)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type to be discovered. |
| bool | includeTopLevel | true to return |
| bool | includeInterfaces | true to include implemented interfaces; false to return inheritance hierarchy only. |
Returns
| Type | Description |
|---|---|
| IEnumerable<Type> | Read-only collection of base types and, optionally, all implemented interfaces. |
GetDefaultValue(Type)
Gets default value for the specified type.
Declaration
public static object? GetDefaultValue(this Type type)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type for which default value should be returned. |
Returns
| Type | Description |
|---|---|
| object | The default value of type |
Remarks
The method returns null for all reference and pointer types and default boxed value for value types.
GetGenericArguments(Type, Type)
Returns actual generic arguments passed into generic type definition implemented by the input type.
Declaration
public static Type[] GetGenericArguments(this Type type, Type genericDefinition)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type that inherits from generic class or implements generic interface. |
| Type | genericDefinition | The definition of generic type. |
Returns
| Type | Description |
|---|---|
| Type[] | The array of actual generic types required by |
Examples
var elementTypes = typeof(byte[]).IsGenericInstanceOf(typeof(IEnumerable<>));
elementTypes[0] == typeof(byte); //true
|
Edit this page
View Source
IsAssignableFromWithoutBoxing(Type, Type)
Indicates that object of one type can be implicitly converted into another without boxing.
Declaration
public static bool IsAssignableFromWithoutBoxing(this Type to, Type from)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | to | Type of conversion result. |
| Type | from | The type check. |
Returns
| Type | Description |
|---|---|
| bool | true if |
Examples
typeof(object).IsAssignableFrom(typeof(int)); //true
typeof(object).IsAssignableFromWithoutBoxing(typeof(int)); //false
typeof(object).IsAssignableFrom(typeof(string)); //true
typeof(object).IsAssignableFromWithoutBoxing(typeof(string));//true
See Also
| Edit this page View SourceIsGenericInstanceOf(Type, Type)
Determines whether the type is an instance of the specified generic type.
Declaration
public static bool IsGenericInstanceOf(this Type type, Type genericDefinition)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type to check. |
| Type | genericDefinition | Generic type definition. |
Returns
| Type | Description |
|---|---|
| bool | true, if the type is an instance of the specified generic type; otherwise, false. |
Examples
typeof(byte[]).IsGenericInstanceOf(typeof(IEnumerable<>)); //returns true
typeof(List<int>).IsGenericInstanceOf(typeof(List<int>)); //returns true
|
Edit this page
View Source
IsImmutable(Type)
Determines whether the type is read-only (immutable) value type.
Declaration
public static bool IsImmutable(this Type type)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type to inspect. |
Returns
| Type | Description |
|---|---|
| bool | true, if the specified type is immutable value type; otherwise, false. |
IsUnmanaged(Type)
Determines whether the type is unmanaged value type.
Declaration
public static bool IsUnmanaged(this Type type)
Parameters
| Type | Name | Description |
|---|---|---|
| Type | type | The type to inspect. |
Returns
| Type | Description |
|---|---|
| bool | true, if the specified type is unmanaged value type; otherwise, false. |