// 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); } }
// 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); } }