System.Type.GetTypeFromHandle C# (CSharp) Method

GetTypeFromHandle() public static method

public static GetTypeFromHandle ( RuntimeTypeHandle typeHandle ) : Type
typeHandle RuntimeTypeHandle
return Type
        public static Type GetTypeFromHandle(RuntimeTypeHandle typeHandle)
        {
            return null;
        }

Usage Example

        private object ResolveArgumentValue(CustomAttributeArgument argument, Type type)
        {
            var typeCode = argument.ArgumentType.TypeCode;
            var valuePtr = argument.GetArgumentValue();

            // If its an enum type
            if (argument.ArgumentType.ParentType.Handle == EnumTypePtr.Handle)
            {
                typeCode = argument.ArgumentType.ElementType.TypeCode;
            }

            switch (typeCode)
            {
            // 1 byte
            case TypeCode.Boolean:
                return((bool)(Intrinsic.Load8(valuePtr) != 0));

            case TypeCode.U1:
                return((byte)Intrinsic.Load8(valuePtr));

            case TypeCode.I1:
                return((sbyte)Intrinsic.Load8(valuePtr));

            // 2 bytes
            case TypeCode.Char:
                return((char)Intrinsic.Load16(valuePtr));

            case TypeCode.U2:
                return((ushort)Intrinsic.Load16(valuePtr));

            case TypeCode.I2:
                return((short)Intrinsic.Load16(valuePtr));

            // 4 bytes
            case TypeCode.U4:
                return((uint)Intrinsic.Load32(valuePtr));

            case TypeCode.I4:
                return((int)Intrinsic.Load32(valuePtr));

            case TypeCode.R4:
                return(Intrinsic.LoadR4(valuePtr));

            // 8 bytes
            case TypeCode.U8:
                return((ulong)Intrinsic.Load64(valuePtr));

            case TypeCode.I8:
                return((long)Intrinsic.Load64(valuePtr));

            case TypeCode.R8:
                return(Intrinsic.LoadR8(valuePtr));

            // SZArray
            case TypeCode.SZArray:
                return(ResolveArrayValue(argument, type));

            // String
            case TypeCode.String:
                return((string)Intrinsic.GetObjectFromAddress(valuePtr));

            default:
                if (type.FullName == "System.Type")
                {
                    // Get the argument type
                    var argTypeHandle = new RuntimeTypeHandle(argument.ArgumentType.Ptr);

                    return(Type.GetTypeFromHandle(argTypeHandle));
                }
                throw new ArgumentException();
            }
        }
All Usage Examples Of System.Type::GetTypeFromHandle