internal static MetadataHeader FromReadingContext(ReadingContext context) { var reader = context.Reader; var header = new MetadataHeader { StartOffset = reader.Position, Signature = reader.ReadUInt32(), MajorVersion = reader.ReadUInt16(), MinorVersion = reader.ReadUInt16(), Reserved = reader.ReadUInt32(), VersionLength = reader.ReadUInt32(), }; header.VersionString = Encoding.ASCII.GetString(reader.ReadBytes((int)header.VersionLength)); header.Flags = reader.ReadUInt16(); var streamCount = reader.ReadUInt16(); for (int i = 0; i < streamCount; i++) { var streamHeader = MetadataStreamHeader.FromReadingContext(context); header.StreamHeaders.Add(streamHeader); } return(header); }