Ejemplo n.º 1
0
            public override unsafe TestClassWithExternalObjectSerializer Deserialize(DeserializationArchive archive)
            {
                var obj = new TestClassWithExternalObjectSerializer();

                if (archive.Version == 1)
                {
                    obj.BooleanFalse                 = archive.ReadBoolean();
                    obj.BooleanTrue                  = archive.ReadBoolean();
                    obj.Char                         = archive.ReadChar();
                    obj.SByte                        = archive.ReadSByte();
                    obj.Byte                         = archive.ReadByte();
                    obj.Int16                        = archive.ReadInt16();
                    obj.UInt16                       = archive.ReadUInt16();
                    obj.Int32                        = archive.ReadInt32();
                    obj.UInt32                       = archive.ReadUInt32();
                    obj.Int64                        = archive.ReadInt64();
                    obj.UInt64                       = archive.ReadUInt64();
                    obj.Single                       = archive.ReadSingle();
                    obj.Double                       = archive.ReadDouble();
                    obj.Decimal                      = archive.ReadDecimal();
                    obj.String                       = archive.ReadString();
                    obj.DateTime                     = archive.ReadDateTime();
                    obj.DateTimeOffset               = archive.ReadDateTimeOffset();
                    obj.Guid                         = archive.ReadGuid();
                    obj.NonGenericType               = archive.ReadType();
                    obj.GenericTypeDefinition        = archive.ReadType();
                    obj.ClosedConstructedGenericType = archive.ReadType();
                    obj.NullReference                = archive.ReadObject();
                    obj.Enum_S8                      = archive.ReadEnum <TestEnum_S8>();
                    obj.Enum_U8                      = archive.ReadEnum <TestEnum_U8>();
                    obj.Enum_S16                     = archive.ReadEnum <TestEnum_S16>();
                    obj.Enum_U16                     = archive.ReadEnum <TestEnum_U16>();
                    obj.Enum_S32                     = archive.ReadEnum <TestEnum_S32>();
                    obj.Enum_U32                     = archive.ReadEnum <TestEnum_U32>();
                    obj.Enum_S64                     = archive.ReadEnum <TestEnum_S64>();
                    obj.Enum_U64                     = archive.ReadEnum <TestEnum_U64>();
                    obj.SerializableObject           = (List <int>)archive.ReadObject();

                    // deserialize buffer via pointer
                    int bufferSize = archive.ReadInt32();
                    obj.Buffer1 = new byte[bufferSize];

                    fixed(byte *pBuffer = &obj.Buffer1[0]) archive.ReadBuffer(pBuffer, bufferSize);

                    // deserialize buffer via Stream
                    int buffer2Size = archive.ReadInt32();
                    var stream      = archive.ReadStream();
                    obj.Buffer2 = new byte[buffer2Size];
                    int readByteCount = stream.Read(obj.Buffer2, 0, obj.Buffer2.Length);
                    stream.Dispose();
                    Debug.Assert(readByteCount == obj.Buffer2.Length);
                    Debug.Assert(stream.Length == obj.Buffer2.Length);
                }
                else
                {
                    throw new VersionNotSupportedException(archive);
                }

                return(obj);
            }
Ejemplo n.º 2
0
            public unsafe GenericTestClassWithInternalObjectSerializer(DeserializationArchive archive)
            {
                if (archive.Version == 1)
                {
                    BooleanFalse                 = archive.ReadBoolean();
                    BooleanTrue                  = archive.ReadBoolean();
                    Char                         = archive.ReadChar();
                    SByte                        = archive.ReadSByte();
                    Byte                         = archive.ReadByte();
                    Int16                        = archive.ReadInt16();
                    UInt16                       = archive.ReadUInt16();
                    Int32                        = archive.ReadInt32();
                    UInt32                       = archive.ReadUInt32();
                    Int64                        = archive.ReadInt64();
                    UInt64                       = archive.ReadUInt64();
                    Single                       = archive.ReadSingle();
                    Double                       = archive.ReadDouble();
                    Decimal                      = archive.ReadDecimal();
                    String                       = archive.ReadString();
                    DateTime                     = archive.ReadDateTime();
                    DateTimeOffset               = archive.ReadDateTimeOffset();
                    Guid                         = archive.ReadGuid();
                    NonGenericType               = archive.ReadType();
                    GenericTypeDefinition        = archive.ReadType();
                    ClosedConstructedGenericType = archive.ReadType();
                    NullReference                = archive.ReadObject();
                    Enum_S8                      = archive.ReadEnum <TestEnum_S8>();
                    Enum_U8                      = archive.ReadEnum <TestEnum_U8>();
                    Enum_S16                     = archive.ReadEnum <TestEnum_S16>();
                    Enum_U16                     = archive.ReadEnum <TestEnum_U16>();
                    Enum_S32                     = archive.ReadEnum <TestEnum_S32>();
                    Enum_U32                     = archive.ReadEnum <TestEnum_U32>();
                    Enum_S64                     = archive.ReadEnum <TestEnum_S64>();
                    Enum_U64                     = archive.ReadEnum <TestEnum_U64>();
                    SerializableObject           = (List <int>)archive.ReadObject();

                    // deserialize buffer via pointer
                    int buffer1Size = archive.ReadInt32();
                    Buffer1 = new byte[buffer1Size];

                    fixed(byte *pBuffer = &Buffer1[0]) archive.ReadBuffer(pBuffer, buffer1Size);

                    // deserialize buffer via Stream
                    int buffer2Size = archive.ReadInt32();
                    var stream      = archive.ReadStream();
                    Buffer2 = new byte[buffer2Size];
                    int readByteCount = stream.Read(Buffer2, 0, Buffer2.Length);
                    stream.Dispose();
                    Debug.Assert(readByteCount == Buffer2.Length);
                    Debug.Assert(stream.Length == Buffer2.Length);
                }
                else
                {
                    throw new VersionNotSupportedException(archive);
                }
            }
Ejemplo n.º 3
0
 public GraphNodeWithInternalObjectSerializer(DeserializationArchive archive)
 {
     if (archive.Version == 1)
     {
         Name = archive.ReadString();
         Next = (List <GraphNode>)archive.ReadObject();
     }
     else
     {
         throw new VersionNotSupportedException(archive);
     }
 }
 public TestClassWithInternalObjectSerializer_Derived(DeserializationArchive archive) :
     base(archive.PrepareBaseArchive())
 {
     if (archive.Version == 1)
     {
         AnotherString = archive.ReadString();
     }
     else
     {
         throw new VersionNotSupportedException(archive);
     }
 }
Ejemplo n.º 5
0
            public override GraphNode Deserialize(DeserializationArchive archive)
            {
                var obj = new GraphNode();

                if (archive.Version == 1)
                {
                    obj.Name = archive.ReadString();
                    obj.Next = (List <GraphNode>)archive.ReadObject();
                }
                else
                {
                    throw new VersionNotSupportedException(archive);
                }

                return(obj);
            }