Пример #1
0
        public static Instruction Create(Type t)
        {
            if (!t.GetTypeInfo().IsEnum)
            {
                switch (t.GetTypeCode())
                {
                case TypeCode.Boolean: return(s_boolean ?? (s_boolean = new CastInstructionT <bool>()));

                case TypeCode.Byte: return(s_byte ?? (s_byte = new CastInstructionT <byte>()));

                case TypeCode.Char: return(s_char ?? (s_char = new CastInstructionT <char>()));

                case TypeCode.DateTime: return(s_dateTime ?? (s_dateTime = new CastInstructionT <DateTime>()));

                case TypeCode.Decimal: return(s_decimal ?? (s_decimal = new CastInstructionT <decimal>()));

                case TypeCode.Double: return(s_double ?? (s_double = new CastInstructionT <double>()));

                case TypeCode.Int16: return(s_int16 ?? (s_int16 = new CastInstructionT <short>()));

                case TypeCode.Int32: return(s_int32 ?? (s_int32 = new CastInstructionT <int>()));

                case TypeCode.Int64: return(s_int64 ?? (s_int64 = new CastInstructionT <long>()));

                case TypeCode.SByte: return(s_SByte ?? (s_SByte = new CastInstructionT <sbyte>()));

                case TypeCode.Single: return(s_single ?? (s_single = new CastInstructionT <float>()));

                case TypeCode.String: return(s_string ?? (s_string = new CastInstructionT <string>()));

                case TypeCode.UInt16: return(s_UInt16 ?? (s_UInt16 = new CastInstructionT <ushort>()));

                case TypeCode.UInt32: return(s_UInt32 ?? (s_UInt32 = new CastInstructionT <uint>()));

                case TypeCode.UInt64: return(s_UInt64 ?? (s_UInt64 = new CastInstructionT <ulong>()));
                }
            }

            return(CastInstructionNoT.Create(t));
        }
Пример #2
0
        public static Instruction Create(Type t)
        {
            if (!t.GetTypeInfo().IsEnum)
            {
                switch (System.Dynamic.Utils.TypeExtensions.GetTypeCode(t))
                {
                case TypeCode.Boolean: return(s_boolean ?? (s_boolean = new CastInstructionT <Boolean>()));

                case TypeCode.Byte: return(s_byte ?? (s_byte = new CastInstructionT <Byte>()));

                case TypeCode.Char: return(s_char ?? (s_char = new CastInstructionT <Char>()));

                case TypeCode.DateTime: return(s_dateTime ?? (s_dateTime = new CastInstructionT <DateTime>()));

                case TypeCode.Decimal: return(s_decimal ?? (s_decimal = new CastInstructionT <Decimal>()));

                case TypeCode.Double: return(s_double ?? (s_double = new CastInstructionT <Double>()));

                case TypeCode.Int16: return(s_int16 ?? (s_int16 = new CastInstructionT <Int16>()));

                case TypeCode.Int32: return(s_int32 ?? (s_int32 = new CastInstructionT <Int32>()));

                case TypeCode.Int64: return(s_int64 ?? (s_int64 = new CastInstructionT <Int64>()));

                case TypeCode.SByte: return(s_SByte ?? (s_SByte = new CastInstructionT <SByte>()));

                case TypeCode.Single: return(s_single ?? (s_single = new CastInstructionT <Single>()));

                case TypeCode.String: return(s_string ?? (s_string = new CastInstructionT <String>()));

                case TypeCode.UInt16: return(s_UInt16 ?? (s_UInt16 = new CastInstructionT <UInt16>()));

                case TypeCode.UInt32: return(s_UInt32 ?? (s_UInt32 = new CastInstructionT <UInt32>()));

                case TypeCode.UInt64: return(s_UInt64 ?? (s_UInt64 = new CastInstructionT <UInt64>()));
                }
            }

            return(CastInstructionNoT.Create(t));
        }
Пример #3
0
        public static Instruction Create(Type t)
        {
            Debug.Assert(!t.IsEnum);
            switch (Type.GetTypeCode(t))
            {
            case TypeCode.Boolean: return(_boolean ??= new CastInstructionT <bool>());

            case TypeCode.Byte: return(_byte ??= new CastInstructionT <byte>());

            case TypeCode.Char: return(_char ??= new CastInstructionT <char>());

            case TypeCode.DateTime: return(_dateTime ??= new CastInstructionT <DateTime>());

            case TypeCode.Decimal: return(_decimal ??= new CastInstructionT <decimal>());

            case TypeCode.Double: return(_double ??= new CastInstructionT <double>());

            case TypeCode.Int16: return(_int16 ??= new CastInstructionT <short>());

            case TypeCode.Int32: return(_int32 ??= new CastInstructionT <int>());

            case TypeCode.Int64: return(_int64 ??= new CastInstructionT <long>());

            case TypeCode.SByte: return(_sByte ??= new CastInstructionT <sbyte>());

            case TypeCode.Single: return(_single ??= new CastInstructionT <float>());

            case TypeCode.String: return(_string ??= new CastInstructionT <string>());

            case TypeCode.UInt16: return(_uInt16 ??= new CastInstructionT <ushort>());

            case TypeCode.UInt32: return(_uInt32 ??= new CastInstructionT <uint>());

            case TypeCode.UInt64: return(_uInt64 ??= new CastInstructionT <ulong>());

            default: return(CastInstructionNoT.Create(t));
            }
        }
Пример #4
0
        public static Instruction Create(Type t)
        {
            Debug.Assert(!t.IsEnum);
            return(t.GetTypeCode() switch
            {
                TypeCode.Boolean => s_Boolean ??= new CastInstructionT <bool>(),
                TypeCode.Byte => s_Byte ??= new CastInstructionT <byte>(),
                TypeCode.Char => s_Char ??= new CastInstructionT <char>(),
                TypeCode.DateTime => s_DateTime ??= new CastInstructionT <DateTime>(),
                TypeCode.Decimal => s_Decimal ??= new CastInstructionT <decimal>(),
                TypeCode.Double => s_Double ??= new CastInstructionT <double>(),
                TypeCode.Int16 => s_Int16 ??= new CastInstructionT <short>(),
                TypeCode.Int32 => s_Int32 ??= new CastInstructionT <int>(),
                TypeCode.Int64 => s_Int64 ??= new CastInstructionT <long>(),
                TypeCode.SByte => s_SByte ??= new CastInstructionT <sbyte>(),
                TypeCode.Single => s_Single ??= new CastInstructionT <float>(),
                TypeCode.String => s_String ??= new CastInstructionT <string>(),
                TypeCode.UInt16 => s_UInt16 ??= new CastInstructionT <ushort>(),
                TypeCode.UInt32 => s_UInt32 ??= new CastInstructionT <uint>(),
                TypeCode.UInt64 => s_UInt64 ??= new CastInstructionT <ulong>(),

                _ => CastInstructionNoT.Create(t),
            });