예제 #1
0
        public static List <T> GetList <T>(this PacketReader reader)
        {
            ThrowIfArgumentError(reader);
            var con = Cache.GetConverter <T>(reader.converters, false);
            var val = Convert.ToList <T>(reader, con);

            return(val);
        }
예제 #2
0
        public static HashSet <T> GetHashSet <T>(this PacketReader reader)
        {
            ThrowIfArgumentError(reader);
            var con = Cache.GetConverter <T>(reader.converters, false);
            var col = Convert.ToArray <T>(reader, con);
            var res = new HashSet <T>(col);

            return(res);
        }
예제 #3
0
        public static Dictionary <TK, TV> GetDictionary <TK, TV>(this PacketReader reader)
        {
            ThrowIfArgumentError(reader);
            var key = Cache.GetConverter <TK>(reader.converters, false);
            var val = Cache.GetConverter <TV>(reader.converters, false);
            var res = Convert.ToDictionary <TK, TV>(reader, key, val);

            return(res);
        }
예제 #4
0
        public static PacketWriter SetDictionary <TK, TV>(this PacketWriter writer, string key, IDictionary <TK, TV> value)
        {
            ThrowIfArgumentError(key);
            ThrowIfArgumentError(writer);

            var keycon = Cache.GetConverter <TK>(writer.converters, false);
            var valcon = Cache.GetConverter <TV>(writer.converters, false);
            var val    = (value == null ? null : Convert.FromDictionary(keycon, valcon, value));
            var sub    = new PacketWriter(writer.converters, new ValueDictionary(val, keycon.Length, valcon.Length));
            var itm    = writer.GetDictionary();

            itm[key] = sub;
            return(writer);
        }
예제 #5
0
        public static PacketWriter SetEnumerable <T>(this PacketWriter writer, string key, IEnumerable <T> value)
        {
            ThrowIfArgumentError(key);
            ThrowIfArgumentError(writer);

            var converter = Cache.GetConverter <T>(writer.converters, false);
            var result    = (value != null)
                ? (value is T[] array)
                    ? Convert.FromArray(converter, array)
                    : (value is List <T> list)
                        ? Convert.FromList(converter, list)
                        : Convert.FromEnumerable(converter, value)
                : null;
            var sub = new PacketWriter(writer.converters, new ValueArray(result, converter.Length));
            var itm = writer.GetDictionary();

            itm[key] = sub;
            return(writer);
        }