Пример #1
0
        internal void AddInternal(bool isLast, JToken previous, object content)
        {
            if (IsMultiContent(content))
            {
                IEnumerable enumerable = content as IEnumerable;

                JToken multiPrevious = previous;
                foreach (object c in enumerable)
                {
                    AddInternal(isLast, multiPrevious, c);
                    multiPrevious = (multiPrevious != null) ? multiPrevious._next : Last;
                }
            }
            else
            {
                JToken o = CreateFromContent(content);

                ValidateToken(o);

                if (o.Parent != null)
                {
                    o = o.CloneNode();
                }
                else
                {
                    JContainer parent = this;
                    while (parent.Parent != null)
                    {
                        parent = parent.Parent;
                    }
                    if (o == parent)
                    {
                        o = o.CloneNode();
                    }
                }

                JToken next = (previous != null) ? previous._next : o;

                o.Parent = this;
                o.Next   = next;

                if (previous != null)
                {
                    previous.Next = o;
                }

                if (isLast || previous == null)
                {
                    _content = o;
                }
            }
        }
Пример #2
0
        internal JContainer(JContainer other)
        {
            ValidationUtils.ArgumentNotNull(other, "c");

            JToken content = other.Last;

            if (content != null)
            {
                do
                {
                    content = content._next;
                    Add(content.CloneNode());
                }while (content != other.Last);
            }
        }