Esempio n. 1
0
 public override void WriteObject(object obj, GaeaStream outStream)
 {
     if (obj == null)
         SerializerFactory.GetSerializer(null).WriteObject(null, outStream);
     IList list = (IList)obj;
     Type type = typeof(IList);
     uint typeId = type.GetTypeId();
     outStream.WriteUInt32(typeId);
     if (outStream.WriteRef(obj))
     {
         return;
     }
     outStream.WriteInt32(list.Count);
     foreach (var item in list)
     {
         if (item == null)
         {
             SerializerFactory.GetSerializer(null).WriteObject(item, outStream);
         }
         else
         {
             var itemType = item.GetType();
             outStream.Write(itemType.GetTypeId().GetBytes(), 0, 4);
             SerializerFactory.GetSerializer(itemType).WriteObject(item, outStream);
         }
     }
 }
Esempio n. 2
0
 public override void WriteObject(object obj, GaeaStream outStream)
 {
     if (obj == null)
         SerializerFactory.GetSerializer(null).WriteObject(null, outStream);
     IDictionary dic = (IDictionary)obj;
     Type type = typeof(IDictionary);
     uint typeId = type.GetTypeId();
     outStream.WriteUInt32(typeId);
     if (outStream.WriteRef(obj))
     {
         return;
     }
     outStream.WriteInt32(dic.Count);
     foreach (DictionaryEntry item in dic)
     {
         var keyType = item.Key.GetType();
         outStream.Write(keyType.GetTypeId().GetBytes(), 0, 4);
         SerializerFactory.GetSerializer(keyType).WriteObject(item.Key, outStream);
         if (item.Value == null)
         {
             SerializerFactory.GetSerializer(null).WriteObject(item.Value, outStream);
         }
         else
         {
             var valueType = item.Value.GetType();
             outStream.Write(valueType.GetTypeId().GetBytes(), 0, 4);
             SerializerFactory.GetSerializer(valueType).WriteObject(item.Value, outStream);
         }
     }
 }
Esempio n. 3
0
 public override void WriteObject(object obj, GaeaStream outStream)
 {
     if (obj == null)
     {
         SerializerFactory.GetSerializer(null).WriteObject(null, outStream);
         return;
     }
     Array array = (Array)obj;
     Type t = obj.GetType();
     Type type = t.GetElementType();
     uint typeId = type.GetTypeId();
     outStream.WriteUInt32(typeId);
     if (outStream.WriteRef(obj))
     {
         return;
     }
     outStream.WriteInt32(array.Length);
     if (t == (typeof(byte)))
     {
         outStream.Write((byte[])obj, 0, array.Length);
         return;
     }
     if (!type.IsPrimitives())
     {
         foreach (var item in array)
         {
             if (item == null)
             {
                 SerializerFactory.GetSerializer(null).WriteObject(item, outStream); //if item is null write 0x00000000 to type
             }
             else
             {
                 Type itemT = item.GetType();
                 uint itemTypeId = itemT.GetTypeId();
                 outStream.WriteUInt32(itemTypeId);
                 SerializerFactory.GetSerializer(itemT).WriteObject(item, outStream);
             }
         }
     }
     else
     {
         foreach (var item in array)
         {
             SerializerFactory.GetSerializer(type).WriteObject(item, outStream);
         }
     }
 }