Пример #1
0
        // Token: 0x06000F82 RID: 3970 RVA: 0x0004FF28 File Offset: 0x0004E128
        public virtual object pmethod_2809(Class_285 arg_0, Type arg_1, object obje_0, Class_418 arg_2)
        {
            Type left = Class_514.IsNullableType(arg_1) ? Nullable.GetUnderlyingType(arg_1) : arg_1;

            if (arg_0.prop_9 == Class_508.Null)
            {
                if (!Class_514.IsNullable(arg_1))
                {
                    throw Class_417.xmethod_3101(arg_0, "Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, arg_1));
                }
                return(null);
            }
            else
            {
                if (arg_0.prop_9 != Class_508.StartConstructor || !string.Equals(arg_0.prop_10.ToString(), "Date", StringComparison.Ordinal))
                {
                    throw Class_417.xmethod_3101(arg_0, "Unexpected token or value when parsing date. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, arg_0.prop_9, arg_0.prop_10));
                }
                arg_0.vmethod_1885();
                if (arg_0.prop_9 != Class_508.Integer)
                {
                    throw Class_417.xmethod_3101(arg_0, "Unexpected token parsing date. Expected Integer, got {0}.".FormatWith(CultureInfo.InvariantCulture, arg_0.prop_9));
                }
                long     javaScriptTicks = (long)arg_0.prop_10;
                DateTime dateTime        = Class_502.ConvertJavaScriptTicksToDateTime(javaScriptTicks);
                arg_0.vmethod_1885();
                if (arg_0.prop_9 != Class_508.EndConstructor)
                {
                    throw Class_417.xmethod_3101(arg_0, "Unexpected token parsing date. Expected EndConstructor, got {0}.".FormatWith(CultureInfo.InvariantCulture, arg_0.prop_9));
                }
                if (left == typeof(DateTimeOffset))
                {
                    return(new DateTimeOffset(dateTime));
                }
                return(dateTime);
            }
        }
Пример #2
0
        // Token: 0x06000B0D RID: 2829 RVA: 0x0003FF24 File Offset: 0x0003E124
        private void vmethod_1935(Class_295 arg_0)
        {
            switch (arg_0)
            {
            case Class_295.Number:
            {
                double num = this.gmethod_1943();
                if (this.field_11 == Class_315.Decimal)
                {
                    base.tmethod_1902(Class_508.Float, Convert.ToDecimal(num, CultureInfo.InvariantCulture));
                    return;
                }
                base.tmethod_1902(Class_508.Float, num);
                return;
            }

            case Class_295.String:
            case Class_295.Symbol:
                base.tmethod_1902(Class_508.String, this.lmethod_1938());
                return;

            case Class_295.Object:
            {
                base.xmethod_1901(Class_508.StartObject);
                Class_286.NClass_1 nclass_ = new Class_286.NClass_1(Class_295.Object);
                this.gmethod_1933(nclass_);
                nclass_.field_27 = this.cmethod_1944();
                return;
            }

            case Class_295.Array:
            {
                base.xmethod_1901(Class_508.StartArray);
                Class_286.NClass_1 nclass_2 = new Class_286.NClass_1(Class_295.Array);
                this.gmethod_1933(nclass_2);
                nclass_2.field_27 = this.cmethod_1944();
                return;
            }

            case Class_295.Binary:
            {
                Class_283 class_;
                byte[]    array = this.dmethod_1936(out class_);
                object    obje_ = (class_ != Class_283.Uuid) ? array : new Guid(array);
                base.tmethod_1902(Class_508.Bytes, obje_);
                return;
            }

            case Class_295.Undefined:
                base.xmethod_1901(Class_508.Undefined);
                return;

            case Class_295.Oid:
            {
                byte[] obje_2 = this.lmethod_1948(12);
                base.tmethod_1902(Class_508.Bytes, obje_2);
                return;
            }

            case Class_295.Boolean:
            {
                bool flag = Convert.ToBoolean(this.cmethod_1934());
                base.tmethod_1902(Class_508.Boolean, flag);
                return;
            }

            case Class_295.Date:
            {
                long     javaScriptTicks = this.vmethod_1945();
                DateTime dateTime        = Class_502.ConvertJavaScriptTicksToDateTime(javaScriptTicks);
                DateTime dateTime2;
                switch (this.prop_2)
                {
                case DateTimeKind.Unspecified:
                    dateTime2 = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified);
                    goto IL_1A7;

                case DateTimeKind.Local:
                    dateTime2 = dateTime.ToLocalTime();
                    goto IL_1A7;
                }
                dateTime2 = dateTime;
IL_1A7:
                base.tmethod_1902(Class_508.Date, dateTime2);
                return;
            }

            case Class_295.Null:
                base.xmethod_1901(Class_508.Null);
                return;

            case Class_295.Regex:
            {
                string str    = this.kmethod_1937();
                string str2   = this.kmethod_1937();
                string obje_3 = "/" + str + "/" + str2;
                base.tmethod_1902(Class_508.String, obje_3);
                return;
            }

            case Class_295.Reference:
                base.xmethod_1901(Class_508.StartObject);
                this.field_10 = Class_286.NClass_0.field_18;
                return;

            case Class_295.Code:
                base.tmethod_1902(Class_508.String, this.lmethod_1938());
                return;

            case Class_295.CodeWScope:
                base.xmethod_1901(Class_508.StartObject);
                this.field_10 = Class_286.NClass_0.field_21;
                return;

            case Class_295.Integer:
                base.tmethod_1902(Class_508.Integer, (long)this.cmethod_1944());
                return;

            case Class_295.TimeStamp:
            case Class_295.Long:
                base.tmethod_1902(Class_508.Integer, this.vmethod_1945());
                return;

            default:
                throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + arg_0);
            }
        }