示例#1
0
        // Token: 0x06001269 RID: 4713 RVA: 0x000648AC File Offset: 0x00062AAC
        internal void ReadContentFrom(JsonReader r, [Nullable(2)] JsonLoadSettings settings)
        {
            ValidationUtils.ArgumentNotNull(r, "r");
            IJsonLineInfo lineInfo   = r as IJsonLineInfo;
            JContainer    jcontainer = this;

            for (;;)
            {
                JProperty jproperty = jcontainer as JProperty;
                if (jproperty != null && jproperty.Value != null)
                {
                    if (jcontainer == this)
                    {
                        break;
                    }
                    jcontainer = jcontainer.Parent;
                }
                switch (r.TokenType)
                {
                case JsonToken.None:
                    goto IL_218;

                case JsonToken.StartObject:
                {
                    JObject jobject = new JObject();
                    jobject.SetLineInfo(lineInfo, settings);
                    jcontainer.Add(jobject);
                    jcontainer = jobject;
                    goto IL_218;
                }

                case JsonToken.StartArray:
                {
                    JArray jarray = new JArray();
                    jarray.SetLineInfo(lineInfo, settings);
                    jcontainer.Add(jarray);
                    jcontainer = jarray;
                    goto IL_218;
                }

                case JsonToken.StartConstructor:
                {
                    JConstructor jconstructor = new JConstructor(r.Value.ToString());
                    jconstructor.SetLineInfo(lineInfo, settings);
                    jcontainer.Add(jconstructor);
                    jcontainer = jconstructor;
                    goto IL_218;
                }

                case JsonToken.PropertyName:
                {
                    JProperty jproperty2 = JContainer.ReadProperty(r, settings, lineInfo, jcontainer);
                    if (jproperty2 != null)
                    {
                        jcontainer = jproperty2;
                        goto IL_218;
                    }
                    r.Skip();
                    goto IL_218;
                }

                case JsonToken.Comment:
                    if (settings != null && settings.CommentHandling == CommentHandling.Load)
                    {
                        JValue jvalue = JValue.CreateComment(r.Value.ToString());
                        jvalue.SetLineInfo(lineInfo, settings);
                        jcontainer.Add(jvalue);
                        goto IL_218;
                    }
                    goto IL_218;

                case JsonToken.Integer:
                case JsonToken.Float:
                case JsonToken.String:
                case JsonToken.Boolean:
                case JsonToken.Date:
                case JsonToken.Bytes:
                {
                    JValue jvalue = new JValue(r.Value);
                    jvalue.SetLineInfo(lineInfo, settings);
                    jcontainer.Add(jvalue);
                    goto IL_218;
                }

                case JsonToken.Null:
                {
                    JValue jvalue = JValue.CreateNull();
                    jvalue.SetLineInfo(lineInfo, settings);
                    jcontainer.Add(jvalue);
                    goto IL_218;
                }

                case JsonToken.Undefined:
                {
                    JValue jvalue = JValue.CreateUndefined();
                    jvalue.SetLineInfo(lineInfo, settings);
                    jcontainer.Add(jvalue);
                    goto IL_218;
                }

                case JsonToken.EndObject:
                    if (jcontainer == this)
                    {
                        return;
                    }
                    jcontainer = jcontainer.Parent;
                    goto IL_218;

                case JsonToken.EndArray:
                    if (jcontainer == this)
                    {
                        return;
                    }
                    jcontainer = jcontainer.Parent;
                    goto IL_218;

                case JsonToken.EndConstructor:
                    if (jcontainer == this)
                    {
                        return;
                    }
                    jcontainer = jcontainer.Parent;
                    goto IL_218;
                }
                goto Block_4;
IL_218:
                if (!r.Read())
                {
                    return;
                }
            }
            return;

Block_4:
            throw new InvalidOperationException("The JsonReader should not be on a token of type {0}.".FormatWith(CultureInfo.InvariantCulture, r.TokenType));
        }