Exemplo n.º 1
0
 internal void Init(
     [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type?objectType,
     string[] memberNames,
     Type[]?memberTypes,
     ISurrogateSelector?surrogateSelector,
     StreamingContext context,
     ObjectManager?objectManager,
     SerObjectInfoInit?serObjectInfoInit,
     IFormatterConverter?converter,
     bool bSimpleAssembly)
 {
     _objectType         = objectType;
     _objectManager      = objectManager;
     _wireMemberNames    = memberNames;
     _wireMemberTypes    = memberTypes;
     _context            = context;
     _serObjectInfoInit  = serObjectInfoInit;
     _formatterConverter = converter;
     _isSimpleAssembly   = bSimpleAssembly;
     if (memberTypes != null)
     {
         _isTyped = true;
     }
     if (objectType != null)
     {
         InitReadConstructor(objectType, surrogateSelector, context);
     }
 }
Exemplo n.º 2
0
        internal void Serialize(object graph, BinaryFormatterWriter serWriter)
        {
            if (graph == null)
            {
                throw new ArgumentNullException(nameof(graph));
            }
            if (serWriter == null)
            {
                throw new ArgumentNullException(nameof(serWriter));
            }

            _serWriter = serWriter;

            serWriter.WriteBegin();
            long   headerId = 0;
            object?obj;
            bool   isNew;

            // allocations if methodCall or methodResponse and no graph
            _idGenerator        = new ObjectIDGenerator();
            _objectQueue        = new Queue <object>();
            _formatterConverter = new FormatterConverter();
            _serObjectInfoInit  = new SerObjectInfoInit();

            _topId   = InternalGetId(graph, false, null, out isNew);
            headerId = -1;
            WriteSerializedStreamHeader(_topId, headerId);

            _objectQueue.Enqueue(graph);
            while ((obj = GetNext(out long objectId)) != null)
            {
                WriteObjectInfo?objectInfo = null;

                // GetNext will return either an object or a WriteObjectInfo.
                // A WriteObjectInfo is returned if this object was member of another object
                if (obj is WriteObjectInfo)
                {
                    objectInfo = (WriteObjectInfo)obj;
                }
                else
                {
                    objectInfo          = WriteObjectInfo.Serialize(obj, _surrogates, _context, _serObjectInfoInit, _formatterConverter, this, _binder);
                    objectInfo._assemId = GetAssemblyId(objectInfo);
                }

                objectInfo._objectId = objectId;
                NameInfo typeNameInfo = TypeToNameInfo(objectInfo);
                Write(objectInfo, typeNameInfo, typeNameInfo);
                PutNameInfo(typeNameInfo);
                objectInfo.ObjectEnd();
            }

            serWriter.WriteSerializationHeaderEnd();
            serWriter.WriteEnd();

            // Invoke OnSerialized Event
            _objectManager.RaiseOnSerializedEvent();
        }
Exemplo n.º 3
0
 private void InitFullDeserialization()
 {
     _fullDeserialization = true;
     _stack         = new SerStack("ObjectReader Object Stack");
     _objectManager = new ObjectManager(_surrogates, _context);
     if (_formatterConverter == null)
     {
         _formatterConverter = new FormatterConverter();
     }
 }
Exemplo n.º 4
0
        internal void Init(Type objectType, ISurrogateSelector?surrogateSelector, StreamingContext context, ObjectManager?objectManager, SerObjectInfoInit?serObjectInfoInit, IFormatterConverter?converter, bool bSimpleAssembly)
        {
            _objectType         = objectType;
            _objectManager      = objectManager;
            _context            = context;
            _serObjectInfoInit  = serObjectInfoInit;
            _formatterConverter = converter;
            _isSimpleAssembly   = bSimpleAssembly;

            InitReadConstructor(objectType, surrogateSelector, context);
        }
Exemplo n.º 5
0
        internal static ReadObjectInfo Create(
            [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType,
            ISurrogateSelector?surrogateSelector,
            StreamingContext context,
            ObjectManager?objectManager,
            SerObjectInfoInit?serObjectInfoInit,
            IFormatterConverter?converter,
            bool bSimpleAssembly)
        {
            ReadObjectInfo roi = GetObjectInfo(serObjectInfoInit);

            roi.Init(objectType, surrogateSelector, context, objectManager, serObjectInfoInit, converter, bSimpleAssembly);
            return(roi);
        }
Exemplo n.º 6
0
        internal static ReadObjectInfo Create(Type?objectType, string[] memberNames, Type[]?memberTypes, ISurrogateSelector?surrogateSelector, StreamingContext context, ObjectManager?objectManager, SerObjectInfoInit?serObjectInfoInit, IFormatterConverter?converter, bool bSimpleAssembly)
        {
            ReadObjectInfo roi = GetObjectInfo(serObjectInfoInit);

            roi.Init(objectType, memberNames, memberTypes, surrogateSelector, context, objectManager, serObjectInfoInit, converter, bSimpleAssembly);
            return(roi);
        }