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