Exemplo n.º 1
0
        public static bool CreateAndRead <TMember>(BitStream stream, out TMember result, MySerializer <TMember> serializer, MySerializeInfo info)
        {
            if (ReadNullable(stream, info.IsNullable))
            {
                if (MySerializer <TMember> .IsClass && info.IsDynamic)
                {
                    Type type     = typeof(TMember);
                    bool readType = true;

                    if (info.IsDynamicDefault)
                    {
                        readType = stream.ReadBool();
                    }

                    if (readType)
                    {
                        type = stream.ReadDynamicType(typeof(TMember), info.DynamicSerializer);
                    }

                    object value;
                    MyFactory.GetSerializer(type).Read(stream, out value, info);
                    result = (TMember)value;
                }
                else
                {
                    serializer.Read(stream, out result, info);
                }
                return(true);
            }
            else
            {
                result = default(TMember);
                return(false);
            }
        }
Exemplo n.º 2
0
 public override void Read(Library.Collections.BitStream stream, out T?value, MySerializeInfo info)
 {
     if (stream.ReadBool())
     {
         T val;
         m_serializer.Read(stream, out val, info);
         value = val;
     }
     else
     {
         value = null;
     }
 }