public override Object read(POxOPrimitiveDecoder decoder)
    {
        try
        {
            if (canBeNull)
            {
                byte isNull = (byte)decoder.ReadByte();
                if (isNull == 0x00)
                {
                    return null;
                }
            }
            int size = decoder.readVarInt(true);

            IList list = (IList)typeof(List<>).MakeGenericType(genericTypes).GetConstructor(Type.EmptyTypes).Invoke(null);

            for (int i = 0; i < size; i++)
            {
                Object o = (Object)nestedSerializer.read(decoder);
                list.Add(o);
            }

            return list;
        }
        catch (ObjectDisposedException e)
        {
            throw new POxOSerializerException("Error during List deserializing.", e);
        }
    }
    public override Object read(POxOPrimitiveDecoder decoder)
    {
        try
        {
            if (canBeNull)
            {
                byte isNull = (byte)decoder.ReadByte();
                if (isNull == 0x00)
                {
                    return null;
                }
            }
            int size = decoder.readVarInt(true);

            var list = (IDictionary)typeof(Dictionary<,>).MakeGenericType(new Type[] { keyObjectClass, valueObjectClass }).GetConstructor(Type.EmptyTypes).Invoke(null);

            for (int i = 0; i < size; i++)
            {
                Object key = keyNestedSerializer.read(decoder);
                Object value = valueNestedSerializer.read(decoder);
                list.Add(key, value);
            }

            return list;
        }
        catch (ObjectDisposedException e)
        {
            throw new POxOSerializerException("Error during List deserializing.", e);
        }
    }
 public void read(POxOPrimitiveDecoder decoder, ObjectSerializer serializer, Object obj)
 {
     try
     {
         FieldSerializerUtil[] fieldsSerializerList = objectSerializer.getFieldsSerializers(type);
         for (int i = 0, n = fieldsSerializerList.Length; i < n; i++)
             fieldsSerializerList[i].Field.SetValue(obj,
                 fieldsSerializerList[i].Serializer.read(decoder));
     }
     catch (Exception e)
     {
         throw new POxOSerializerException("Error during fields deserializing. ", e);
     }
 }
 public override Object read(POxOPrimitiveDecoder decoder)
 {
     try
     {
         if (canBeNull)
         {
             byte isNull = (byte)decoder.ReadByte();
             if (isNull == 0x00)
             {
                 return null;
             }
         }
         return decoder.readbool();
     }
     catch (ObjectDisposedException e)
     {
         throw new POxOSerializerException("Error during Date serializing.", e);
     }
 }
    public override Object read(POxOPrimitiveDecoder decoder)
    {
        try
        {
            int ordinal = decoder.readVarInt(true);
            ordinal--;
            Array enumConstants = classToSerialize.GetEnumValues();

            return enumConstants.GetValue(ordinal);
        }
        catch (ArgumentException e)
        {
            throw new POxOSerializerException("Error during Enum deserializing.", e);
        }
        catch (ObjectDisposedException e)
        {
            throw new POxOSerializerException("Error during Enum deserializing.", e);
        }
    }
 public override Object read(POxOPrimitiveDecoder decoder)
 {
     try
     {
         if (canBeNull)
         {
             byte isNull = (byte)decoder.ReadByte();
             if (isNull == 0x00)
             {
                 return null;
             }
         }
         DateTime value = DateTime.FromFileTime(decoder.readLong(true));
         return value;
     }
     catch (ObjectDisposedException e)
     {
         throw new POxOSerializerException("Error during Date deserializing.", e);
     }
     catch (NotSupportedException e)
     {
         throw new POxOSerializerException("Error during Date deserializing.", e);
     }
 }
 public abstract Object read(POxOPrimitiveDecoder decoder);