public object Read(BinaryReader reader, string fullDecl) { string type = fullDecl.Substring(0, fullDecl.Length - 2); TypeReader typeReader = TypeReaders.GetTypeReader(type); uint count = reader.ReadUInt32(); object[] results = new object[count]; for (int i = 0; i < count; ++i) { // TODO: My C++ version gets a new type reader based on the array from the XNB file // Do I need to do that? // Original is for all primitive types but that seems to break if (typeReader is PrimitiveReader <string> ) { reader.Read7BitEncodedInt(); } results[i] = typeReader.Read(reader, type); } Array ret = Array.CreateInstance(typeReader.GetReadType(type), count); Array.Copy(results, ret, count); return(ret); }
public Type GetReadType(string fullDecl) { string type = fullDecl.Substring(0, fullDecl.Length - 2); TypeReader typeReader = TypeReaders.GetTypeReader(type); return(Array.CreateInstance(typeReader.GetReadType(type), 0).GetType()); }