IKVM.Reflection.Type.GetTypeCode C# (CSharp) Метод

GetTypeCode() публичный статический Метод

public static GetTypeCode ( Type type ) : TypeCode
type Type
Результат TypeCode
        public static TypeCode GetTypeCode(Type type)
        {
            if (type == null)
            {
                return TypeCode.Empty;
            }
            if (type.IsEnum)
            {
                type = type.GetEnumUnderlyingType();
            }
            Universe u = type.Module.universe;
            if (type == u.System_Boolean)
            {
                return TypeCode.Boolean;
            }
            else if (type == u.System_Char)
            {
                return TypeCode.Char;
            }
            else if (type == u.System_SByte)
            {
                return TypeCode.SByte;
            }
            else if (type == u.System_Byte)
            {
                return TypeCode.Byte;
            }
            else if (type == u.System_Int16)
            {
                return TypeCode.Int16;
            }
            else if (type == u.System_UInt16)
            {
                return TypeCode.UInt16;
            }
            else if (type == u.System_Int32)
            {
                return TypeCode.Int32;
            }
            else if (type == u.System_UInt32)
            {
                return TypeCode.UInt32;
            }
            else if (type == u.System_Int64)
            {
                return TypeCode.Int64;
            }
            else if (type == u.System_UInt64)
            {
                return TypeCode.UInt64;
            }
            else if (type == u.System_Single)
            {
                return TypeCode.Single;
            }
            else if (type == u.System_Double)
            {
                return TypeCode.Double;
            }
            else if (type == u.System_DateTime)
            {
                return TypeCode.DateTime;
            }
            else if (type == u.System_DBNull)
            {
                return TypeCode.DBNull;
            }
            else if (type == u.System_Decimal)
            {
                return TypeCode.Decimal;
            }
            else if (type == u.System_String)
            {
                return TypeCode.String;
            }
            else
            {
                return TypeCode.Object;
            }
        }

Usage Example

Пример #1
0
        void ReturnValue(Type t)
        {
            switch (Type.GetTypeCode(t))
            {
            case TypeCode.String:
                implementation.WriteLine("\tif (__result == NULL)");
                implementation.WriteLine("\t\treturn NULL;");
                implementation.WriteLine("\tint length = mono_string_length ((MonoString *) __result);");
                implementation.WriteLine("\tgunichar2 *str = mono_string_chars ((MonoString *) __result);");
                implementation.WriteLine("\treturn [[[NSString alloc] initWithBytes: str length: length * 2 encoding: NSUTF16LittleEndianStringEncoding] autorelease];");
                break;

            case TypeCode.Boolean:
            case TypeCode.Char:
            case TypeCode.SByte:
            case TypeCode.Int16:
            case TypeCode.Int32:
            case TypeCode.Int64:
            case TypeCode.Byte:
            case TypeCode.UInt16:
            case TypeCode.UInt32:
            case TypeCode.UInt64:
            case TypeCode.Single:
            case TypeCode.Double:
                var name = GetTypeName(t);
                implementation.WriteLine("\tvoid* __unbox = mono_object_unbox (__result);");
                implementation.WriteLine($"\treturn *(({name}*)__unbox);");
                break;

            default:
                throw new NotImplementedException($"Returning type {t.Name} from native code");
            }
        }
All Usage Examples Of IKVM.Reflection.Type::GetTypeCode