Example #1
0
        protected virtual void Import(ImportContext context, JsonReader reader)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            //
            // IMPORTANT! A new list is created and then committed to make
            // sure that this method is exception-safe. If something goes
            // wrong during the import of elements then this instance
            // will remain largely untouched.
            //

            ArrayList list = new ArrayList();

            reader.ReadToken(JsonTokenClass.Array);

            while (reader.TokenClass != JsonTokenClass.EndArray)
            {
                list.Add(context.Import(reader));
            }

            reader.Read();

            InnerList.Clear();
            InnerList.AddRange(list);
        }
Example #2
0
        protected virtual void Import(ImportContext context, JsonReader reader)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            // FIXME: Consider making this method exception-safe.
            // Right now this is a problem because of reliance on
            // DictionaryBase.

            Clear();

            reader.ReadToken(JsonTokenClass.Object);

            while (reader.TokenClass != JsonTokenClass.EndObject)
            {
                Put(reader.ReadMember(), context.Import(reader));
            }

            reader.Read();
        }
Example #3
0
        private object ImportScalarAsArray(ImportContext context, JsonReader reader)
        {
            Debug.Assert(context != null);
            Debug.Assert(reader != null);

            Type  elementType = OutputType.GetElementType();
            Array array       = Array.CreateInstance(elementType, 1);

            array.SetValue(context.Import(elementType, reader), 0);
            return(array);
        }
Example #4
0
        public static object Import(Type type, JsonReader reader)
        {
            if (type == null)
            {
                throw new ArgumentNullException("type");
            }

            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            ImportContext context = new ImportContext();

            return(context.Import(type, reader));
        }
        protected override object ImportFromArray(ImportContext context, JsonReader reader)
        {
            Debug.Assert(context != null);
            Debug.Assert(reader != null);

            reader.Read();

            MemoryStream ms       = new MemoryStream();
            Type         byteType = typeof(byte);

            while (reader.TokenClass != JsonTokenClass.EndArray)
            {
                ms.WriteByte((byte)context.Import(byteType, reader));
            }

            return(ReadReturning(reader, ms.ToArray()));
        }
Example #6
0
        protected override object ImportFromArray(ImportContext context, JsonReader reader)
        {
            Debug.Assert(context != null);
            Debug.Assert(reader != null);

            reader.Read();

            ArrayList list        = new ArrayList();
            Type      elementType = OutputType.GetElementType();

            while (reader.TokenClass != JsonTokenClass.EndArray)
            {
                list.Add(context.Import(elementType, reader));
            }

            return(ReadReturning(reader, list.ToArray(elementType)));
        }