Ejemplo n.º 1
0
        // Token: 0x06000C31 RID: 3121 RVA: 0x00043F1C File Offset: 0x0004211C
        public virtual object lmethod_2198(Class_285 arg_0, Type arg_1, object obje_0, Class_418 arg_2)
        {
            bool flag = Class_514.IsNullableType(arg_1);
            Type type = flag ? Nullable.GetUnderlyingType(arg_1) : arg_1;

            if (arg_0.prop_9 != Class_508.Null)
            {
                try
                {
                    if (arg_0.prop_9 == Class_508.String)
                    {
                        string enumText = arg_0.prop_10.ToString();
                        return(Class_505.ParseEnumName(enumText, flag, type));
                    }
                    if (arg_0.prop_9 == Class_508.Integer)
                    {
                        if (!this.prop_1)
                        {
                            throw Class_417.xmethod_3101(arg_0, "Integer value {0} is not allowed.".FormatWith(CultureInfo.InvariantCulture, arg_0.prop_10));
                        }
                        return(Class_499.ConvertOrCast(arg_0.prop_10, CultureInfo.InvariantCulture, type));
                    }
                }
                catch (Exception arg_3)
                {
                    throw Class_417.tmethod_3102(arg_0, "Error converting value {0} to type '{1}'.".FormatWith(CultureInfo.InvariantCulture, Class_513.FormatValueForPrint(arg_0.prop_10), arg_1), arg_3);
                }
                throw Class_417.xmethod_3101(arg_0, "Unexpected token {0} when parsing enum.".FormatWith(CultureInfo.InvariantCulture, arg_0.prop_9));
            }
            if (!Class_514.IsNullableType(arg_1))
            {
                throw Class_417.xmethod_3101(arg_0, "Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, arg_1));
            }
            return(null);
        }
Ejemplo n.º 2
0
        // Token: 0x060014E3 RID: 5347 RVA: 0x0006101C File Offset: 0x0005F21C
        private Class_463 cmethod_3824(Type arg_0, Class_364 arg_1)
        {
            Class_463 class_ = Class_463.None;

            if (arg_1 != Class_364.Always && Class_514.IsNullable(arg_0))
            {
                class_ = Class_463.Null;
                if (Class_514.IsNullableType(arg_0))
                {
                    arg_0 = Nullable.GetUnderlyingType(arg_0);
                }
            }
            Class_496 typeCode = Class_499.GetTypeCode(arg_0);

            switch (typeCode)
            {
            case Class_496.Empty:
            case Class_496.Object:
                return(class_ | Class_463.String);

            case Class_496.Char:
                return(class_ | Class_463.String);

            case Class_496.Boolean:
                return(class_ | Class_463.Boolean);

            case Class_496.SByte:
            case Class_496.Int16:
            case Class_496.UInt16:
            case Class_496.Int32:
            case Class_496.Byte:
            case Class_496.UInt32:
            case Class_496.Int64:
            case Class_496.UInt64:
            case Class_496.BigInteger:
                return(class_ | Class_463.Integer);

            case Class_496.Single:
            case Class_496.Double:
            case Class_496.Decimal:
                return(class_ | Class_463.Float);

            case Class_496.DateTime:
            case Class_496.DateTimeOffset:
                return(class_ | Class_463.String);

            case Class_496.Guid:
            case Class_496.TimeSpan:
            case Class_496.Uri:
            case Class_496.String:
            case Class_496.Bytes:
                return(class_ | Class_463.String);

            case Class_496.DBNull:
                return(class_ | Class_463.Null);
            }
            throw new Class_318("Unexpected type code '{0}' for type '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeCode, arg_0));
        }
Ejemplo n.º 3
0
            // Token: 0x06000E99 RID: 3737 RVA: 0x0004D1D8 File Offset: 0x0004B3D8
            public virtual bool nmethod_0(Class_362 arg_0, ConvertBinder arg_1, out object arg_2)
            {
                if (arg_1.Type == typeof(Class_362))
                {
                    arg_2 = arg_0;
                    return(true);
                }
                object obj = arg_0.prop_2;

                if (obj == null)
                {
                    arg_2 = null;
                    return(Class_514.IsNullable(arg_1.Type));
                }
                arg_2 = Class_499.Convert(obj, CultureInfo.InvariantCulture, arg_1.Type);
                return(true);
            }
Ejemplo n.º 4
0
        // Token: 0x06000E6E RID: 3694 RVA: 0x0004C1BC File Offset: 0x0004A3BC
        private static int smethod_2590(BigInteger arg_0, object obje_0)
        {
            int num = arg_0.CompareTo(Class_499.ToBigInteger(obje_0));

            if (num != 0)
            {
                return(num);
            }
            if (obje_0 is decimal)
            {
                decimal num2 = (decimal)obje_0;
                return(0m.CompareTo(Math.Abs(num2 - Math.Truncate(num2))));
            }
            if (obje_0 is double || obje_0 is float)
            {
                double num3 = Convert.ToDouble(obje_0, CultureInfo.InvariantCulture);
                return(0.0.CompareTo(Math.Abs(num3 - Math.Truncate(num3))));
            }
            return(num);
        }
Ejemplo n.º 5
0
 // Token: 0x06000D28 RID: 3368 RVA: 0x00047C64 File Offset: 0x00045E64
 internal Class_349(Type arg_0)
 {
     Class_517.ArgumentNotNull(arg_0, "underlyingType");
     this.prop_0  = arg_0;
     this.field_0 = Class_514.IsNullable(arg_0);
     this.field_3 = ((this.field_0 && Class_514.IsNullableType(arg_0)) ? Nullable.GetUnderlyingType(arg_0) : arg_0);
     this.prop_1  = this.field_3;
     this.field_1 = Class_499.IsConvertible(this.field_3);
     this.field_2 = this.field_3.IsEnum;
     if (this.field_3 == typeof(byte[]))
     {
         this.field_4 = Class_408.ReadAsBytes;
         return;
     }
     if (this.field_3 == typeof(int))
     {
         this.field_4 = Class_408.ReadAsInt32;
         return;
     }
     if (this.field_3 == typeof(decimal))
     {
         this.field_4 = Class_408.ReadAsDecimal;
         return;
     }
     if (this.field_3 == typeof(string))
     {
         this.field_4 = Class_408.ReadAsString;
         return;
     }
     if (this.field_3 == typeof(DateTime))
     {
         this.field_4 = Class_408.ReadAsDateTime;
         return;
     }
     if (this.field_3 == typeof(DateTimeOffset))
     {
         this.field_4 = Class_408.ReadAsDateTimeOffset;
         return;
     }
     this.field_4 = Class_408.Read;
 }
Ejemplo n.º 6
0
 // Token: 0x06000EC2 RID: 3778 RVA: 0x0004D7B4 File Offset: 0x0004B9B4
 public Class_369(Type arg_0) : base(arg_0)
 {
     this.field_5 = Class_448.Primitive;
     this.prop_0  = Class_499.GetTypeCode(arg_0);
     this.field_6 = true;
 }
Ejemplo n.º 7
0
        // Token: 0x0600110C RID: 4364 RVA: 0x000555C4 File Offset: 0x000537C4
        public static string ToString(object value)
        {
            if (value == null)
            {
                return(Class_416.Null);
            }
            switch (Class_499.GetTypeCode(value.GetType()))
            {
            case Class_496.Char:
                return(Class_416.ToString((char)value));

            case Class_496.Boolean:
                return(Class_416.ToString((bool)value));

            case Class_496.SByte:
                return(Class_416.ToString((sbyte)value));

            case Class_496.Int16:
                return(Class_416.ToString((short)value));

            case Class_496.UInt16:
                return(Class_416.ToString((ushort)value));

            case Class_496.Int32:
                return(Class_416.ToString((int)value));

            case Class_496.Byte:
                return(Class_416.ToString((byte)value));

            case Class_496.UInt32:
                return(Class_416.ToString((uint)value));

            case Class_496.Int64:
                return(Class_416.ToString((long)value));

            case Class_496.UInt64:
                return(Class_416.ToString((ulong)value));

            case Class_496.Single:
                return(Class_416.ToString((float)value));

            case Class_496.Double:
                return(Class_416.ToString((double)value));

            case Class_496.DateTime:
                return(Class_416.ToString((DateTime)value));

            case Class_496.DateTimeOffset:
                return(Class_416.ToString((DateTimeOffset)value));

            case Class_496.Decimal:
                return(Class_416.ToString((decimal)value));

            case Class_496.Guid:
                return(Class_416.ToString((Guid)value));

            case Class_496.TimeSpan:
                return(Class_416.ToString((TimeSpan)value));

            case Class_496.BigInteger:
                return(Class_416.ToStringInternal((BigInteger)value));

            case Class_496.Uri:
                return(Class_416.ToString((Uri)value));

            case Class_496.String:
                return(Class_416.ToString((string)value));

            case Class_496.DBNull:
                return(Class_416.Null);
            }
            throw new ArgumentException("Unsupported type: {0}. Use the JsonSerializer class to get the object's JSON representation.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
        }
Ejemplo n.º 8
0
        // Token: 0x06000E71 RID: 3697 RVA: 0x0004C5E8 File Offset: 0x0004A7E8
        private static bool gmethod_2593(ExpressionType arg_0, object obje_0, object obje_1, out object arg_1)
        {
            if ((obje_0 is string || obje_1 is string) && (arg_0 == ExpressionType.Add || arg_0 == ExpressionType.AddAssign))
            {
                arg_1 = ((obje_0 != null) ? obje_0.ToString() : null) + ((obje_1 != null) ? obje_1.ToString() : null);
                return(true);
            }
            if (obje_0 is BigInteger || obje_1 is BigInteger)
            {
                if (obje_0 == null || obje_1 == null)
                {
                    arg_1 = null;
                    return(true);
                }
                BigInteger bigInteger  = Class_499.ToBigInteger(obje_0);
                BigInteger bigInteger2 = Class_499.ToBigInteger(obje_1);
                if (arg_0 > ExpressionType.Multiply)
                {
                    if (arg_0 <= ExpressionType.DivideAssign)
                    {
                        if (arg_0 != ExpressionType.Subtract)
                        {
                            switch (arg_0)
                            {
                            case ExpressionType.AddAssign:
                                goto IL_EB;

                            case ExpressionType.AndAssign:
                                goto IL_49E;

                            case ExpressionType.DivideAssign:
                                goto IL_11B;

                            default:
                                goto IL_49E;
                            }
                        }
                    }
                    else
                    {
                        if (arg_0 == ExpressionType.MultiplyAssign)
                        {
                            goto IL_10B;
                        }
                        if (arg_0 != ExpressionType.SubtractAssign)
                        {
                            goto IL_49E;
                        }
                    }
                    arg_1 = bigInteger - bigInteger2;
                    return(true);
                }
                if (arg_0 != ExpressionType.Add)
                {
                    if (arg_0 == ExpressionType.Divide)
                    {
                        goto IL_11B;
                    }
                    if (arg_0 != ExpressionType.Multiply)
                    {
                        goto IL_49E;
                    }
                    goto IL_10B;
                }
IL_EB:
                arg_1 = bigInteger + bigInteger2;
                return(true);

IL_10B:
                arg_1 = bigInteger * bigInteger2;
                return(true);

IL_11B:
                arg_1 = bigInteger / bigInteger2;
                return(true);
            }
            else if (obje_0 is ulong || obje_1 is ulong || obje_0 is decimal || obje_1 is decimal)
            {
                if (obje_0 == null || obje_1 == null)
                {
                    arg_1 = null;
                    return(true);
                }
                decimal d  = Convert.ToDecimal(obje_0, CultureInfo.InvariantCulture);
                decimal d2 = Convert.ToDecimal(obje_1, CultureInfo.InvariantCulture);
                if (arg_0 > ExpressionType.Multiply)
                {
                    if (arg_0 <= ExpressionType.DivideAssign)
                    {
                        if (arg_0 != ExpressionType.Subtract)
                        {
                            switch (arg_0)
                            {
                            case ExpressionType.AddAssign:
                                goto IL_1F0;

                            case ExpressionType.AndAssign:
                                goto IL_49E;

                            case ExpressionType.DivideAssign:
                                goto IL_223;

                            default:
                                goto IL_49E;
                            }
                        }
                    }
                    else
                    {
                        if (arg_0 == ExpressionType.MultiplyAssign)
                        {
                            goto IL_212;
                        }
                        if (arg_0 != ExpressionType.SubtractAssign)
                        {
                            goto IL_49E;
                        }
                    }
                    arg_1 = d - d2;
                    return(true);
                }
                if (arg_0 != ExpressionType.Add)
                {
                    if (arg_0 == ExpressionType.Divide)
                    {
                        goto IL_223;
                    }
                    if (arg_0 != ExpressionType.Multiply)
                    {
                        goto IL_49E;
                    }
                    goto IL_212;
                }
IL_1F0:
                arg_1 = d + d2;
                return(true);

IL_212:
                arg_1 = d * d2;
                return(true);

IL_223:
                arg_1 = d / d2;
                return(true);
            }
            else if (obje_0 is float || obje_1 is float || obje_0 is double || obje_1 is double)
            {
                if (obje_0 == null || obje_1 == null)
                {
                    arg_1 = null;
                    return(true);
                }
                double num  = Convert.ToDouble(obje_0, CultureInfo.InvariantCulture);
                double num2 = Convert.ToDouble(obje_1, CultureInfo.InvariantCulture);
                if (arg_0 > ExpressionType.Multiply)
                {
                    if (arg_0 <= ExpressionType.DivideAssign)
                    {
                        if (arg_0 != ExpressionType.Subtract)
                        {
                            switch (arg_0)
                            {
                            case ExpressionType.AddAssign:
                                goto IL_2FA;

                            case ExpressionType.AndAssign:
                                goto IL_49E;

                            case ExpressionType.DivideAssign:
                                goto IL_324;

                            default:
                                goto IL_49E;
                            }
                        }
                    }
                    else
                    {
                        if (arg_0 == ExpressionType.MultiplyAssign)
                        {
                            goto IL_316;
                        }
                        if (arg_0 != ExpressionType.SubtractAssign)
                        {
                            goto IL_49E;
                        }
                    }
                    arg_1 = num - num2;
                    return(true);
                }
                if (arg_0 != ExpressionType.Add)
                {
                    if (arg_0 == ExpressionType.Divide)
                    {
                        goto IL_324;
                    }
                    if (arg_0 != ExpressionType.Multiply)
                    {
                        goto IL_49E;
                    }
                    goto IL_316;
                }
IL_2FA:
                arg_1 = num + num2;
                return(true);

IL_316:
                arg_1 = num * num2;
                return(true);

IL_324:
                arg_1 = num / num2;
                return(true);
            }
            else if (obje_0 is int || obje_0 is uint || obje_0 is long || obje_0 is short || obje_0 is ushort || obje_0 is sbyte || obje_0 is byte || obje_1 is int || obje_1 is uint || obje_1 is long || obje_1 is short || obje_1 is ushort || obje_1 is sbyte || obje_1 is byte)
            {
                if (obje_0 == null || obje_1 == null)
                {
                    arg_1 = null;
                    return(true);
                }
                long num3 = Convert.ToInt64(obje_0, CultureInfo.InvariantCulture);
                long num4 = Convert.ToInt64(obje_1, CultureInfo.InvariantCulture);
                if (arg_0 > ExpressionType.Multiply)
                {
                    if (arg_0 <= ExpressionType.DivideAssign)
                    {
                        if (arg_0 != ExpressionType.Subtract)
                        {
                            switch (arg_0)
                            {
                            case ExpressionType.AddAssign:
                                goto IL_466;

                            case ExpressionType.AndAssign:
                                goto IL_49E;

                            case ExpressionType.DivideAssign:
                                goto IL_490;

                            default:
                                goto IL_49E;
                            }
                        }
                    }
                    else
                    {
                        if (arg_0 == ExpressionType.MultiplyAssign)
                        {
                            goto IL_482;
                        }
                        if (arg_0 != ExpressionType.SubtractAssign)
                        {
                            goto IL_49E;
                        }
                    }
                    arg_1 = num3 - num4;
                    return(true);
                }
                if (arg_0 != ExpressionType.Add)
                {
                    if (arg_0 == ExpressionType.Divide)
                    {
                        goto IL_490;
                    }
                    if (arg_0 != ExpressionType.Multiply)
                    {
                        goto IL_49E;
                    }
                    goto IL_482;
                }
IL_466:
                arg_1 = num3 + num4;
                return(true);

IL_482:
                arg_1 = num3 * num4;
                return(true);

IL_490:
                arg_1 = num3 / num4;
                return(true);
            }
IL_49E:
            arg_1 = null;
            return(false);
        }