public static void DiscardValue(ReaderState reader, SerializedType?knownType = null) { var valueType = knownType ?? Reader.ReadSerializedType(reader); switch (valueType) { case SerializedType.CustomObject: DiscardValue(reader); // custom object ID while (Reader.ReadEnumerableType(reader) == EnumerableType.HasItem) { reader.ReadString(); // key DiscardValue(reader); // value } break; case SerializedType.Object: while (Reader.ReadEnumerableType(reader) == EnumerableType.HasItem) { reader.ReadString(); // key DiscardValue(reader); // value } break; case SerializedType.Dictionary: var kvpCount = reader.Read <int>(); for (var i = 0; i < kvpCount; i++) { DiscardValue(reader); // key DiscardValue(reader); // value } break; case SerializedType.List: { var count = reader.Read <int>(); for (var i = 0; i < count; i++) { DiscardValue(reader); } break; } case SerializedType.HList: { var count = reader.Read <int>(); var elementType = Reader.ReadSerializedType(reader); DiscardValues(reader, count, elementType); break; } case SerializedType.Enumerable: while (Reader.ReadEnumerableType(reader) == EnumerableType.HasItem) { DiscardValue(reader); } break; case SerializedType.HEnumerable: { var elementType = Reader.ReadSerializedType(reader); DiscardValues(reader, elementType); break; } case SerializedType.String: Reader.ReadString(reader); break; case SerializedType.Byte: Reader.ReadByte(reader); break; case SerializedType.SByte: Reader.ReadSByte(reader); break; case SerializedType.UShort: Reader.ReadUShort(reader); break; case SerializedType.Short: Reader.ReadShort(reader); break; case SerializedType.UInt: Reader.ReadUInt(reader); break; case SerializedType.Int: Reader.ReadInt(reader); break; case SerializedType.ULong: Reader.ReadULong(reader); break; case SerializedType.Long: Reader.ReadLong(reader); break; case SerializedType.Float: Reader.ReadFloat(reader); break; case SerializedType.Double: Reader.ReadDouble(reader); break; case SerializedType.Bool: Reader.ReadBool(reader); break; case SerializedType.Decimal: Reader.ReadDecimal(reader); break; case SerializedType.DateTime: Reader.ReadDateTime(reader); break; case SerializedType.Guid: Reader.ReadGuid(reader); break; case SerializedType.Char: Reader.ReadChar(reader); break; case SerializedType.Null: break; default: throw new NotSupportedException($"SerializedType '{valueType}' is not supported"); } }
public static string ReadString(ReaderState reader) { return(reader.ReadString()); }