Esempio n. 1
0
        public T ReadStruct <T>(DeserializeHandler <T> handler) where T : class
        {
            var element = Activator.CreateInstance <T>();

            handler(element, this);

            return(element);
        }
Esempio n. 2
0
        public static void Register <T>(SerializeHandler <T> serializer, DeserializeHandler <T> deserializer)
        {
            Serializer <T> .serialize     = serializer;
            Deserializer <T> .deserialize = deserializer;

            _customTypes.Add(typeof(T));

            Log.Verbose?.Invoke($"registered {typeof(T)}");
        }
Esempio n. 3
0
        public T ReadStruct <T>(DeserializeHandler <T> handler) where T : class
        {
            var bound = _reader.ReadInt32();

            var element = Activator.CreateInstance <T>();

            handler(element, new DataReader(this, _reader.BaseStream.Position + bound));

            return(element);
        }
Esempio n. 4
0
 /// <summary>
 /// Registers the specified type and handlers.
 /// If the specified type already exists, the handlers will be replaced by the newer ones.
 /// HIGHLY recommended to use static methods for the handlers.
 /// </summary>
 public static void Register(Type type, SerializeHandler serializer, DeserializeHandler deserializer)
 {
     if (!handlers.ContainsKey(type))
     {
         handlers.Add(type, new Info(serializer, deserializer));
     }
     else
     {
         handlers[type].Replace(serializer, deserializer);
     }
 }
Esempio n. 5
0
 /// <summary>
 /// Replaces the handlers in this object with the specified handlers.
 /// If a given handler is null, the replacement process will be ignored.
 /// </summary>
 public void Replace(SerializeHandler s, DeserializeHandler d)
 {
     if (s != null)
     {
         serializer = s;
     }
     if (d != null)
     {
         deserializer = d;
     }
 }
Esempio n. 6
0
        public void ReadList_Struct <T>(List <T> list, DeserializeHandler <T> handler) where T : class
        {
            var c = _reader.ReadInt32();

            for (int i = 0; i < c; i++)
            {
                var element = Activator.CreateInstance <T>();

                handler(element, this);

                list.Add(element);
            }
        }
        static IList <TObject> DeserializeMany <TObject>(string serialized, DeserializeHandler <TObject> deserializeHandler)
        {
            var serialization = serialized.Split('|');
            var length        = serialization.Length;
            var objects       = new List <TObject>(length);

            for (int i = 0; i < length; i++)
            {
                var ser = serialization[i];
                objects.Add(deserializeHandler(ser));
            }

            return(objects);
        }
Esempio n. 8
0
 public Info(SerializeHandler s, DeserializeHandler d)
 {
     serializer   = s;
     deserializer = d;
 }