Exemple #1
0
        public override object Read(ES3Reader reader)
        {
            var instance = (IList)ES3Reflection.CreateInstance(ES3Reflection.MakeGenericType(typeof(List <>), elementType.type));

            if (reader.StartReadCollection())
            {
                return(null);
            }

            // Iterate through each character until we reach the end of the array.
            while (true)
            {
                if (!reader.StartReadCollectionItem())
                {
                    break;
                }
                instance.Add(reader.Read <object>(elementType));

                if (reader.EndReadCollectionItem())
                {
                    break;
                }
            }

            reader.EndReadCollection();

            return(ES3Reflection.CreateInstance(type, instance));
        }
Exemple #2
0
        public override object Read(ES3Reader reader)
        {
            /*var method = typeof(ES3CollectionType).GetMethod("ReadICollection", BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(elementType.type);
             * if(!(bool)method.Invoke(this, new object[] { reader, list, elementType }))
             *  return null;*/

            var genericParam = ES3Reflection.GetGenericArguments(type)[0];
            var listType     = ES3Reflection.MakeGenericType(typeof(List <>), genericParam);
            var list         = (IList)ES3Reflection.CreateInstance(listType);

            if (!reader.StartReadCollection())
            {
                // Iterate through each character until we reach the end of the array.
                while (true)
                {
                    if (!reader.StartReadCollectionItem())
                    {
                        break;
                    }
                    list.Add(reader.Read <object>(elementType));

                    if (reader.EndReadCollectionItem())
                    {
                        break;
                    }
                }

                reader.EndReadCollection();
            }

            return(ES3Reflection.CreateInstance(type, list));
        }
Exemple #3
0
        public override object Read(ES3Reader reader)
        {
            var instance = (IList)ES3Reflection.CreateInstance(ES3Reflection.MakeGenericType(typeof(List <>), elementType.type));

            if (reader.StartReadCollection())
            {
                return(null);
            }

            // Iterate through each character until we reach the end of the array.
            while (true)
            {
                if (!reader.StartReadCollectionItem())
                {
                    break;
                }
                instance.Add(reader.Read <object>(elementType));

                if (reader.EndReadCollectionItem())
                {
                    break;
                }
            }

            reader.EndReadCollection();

            ES3Reflection.GetMethods(instance.GetType(), "Reverse").FirstOrDefault(t => !t.IsStatic).Invoke(instance, new object[] {});
            return(ES3Reflection.CreateInstance(type, instance));
        }