Example #1
0
        public void DeserializeInstance(SlimReader reader, TypeRegistry registry, RefPool refs, ref object instance, StreamingContext streamingContext)
        {
            if (m_MethodsOnDeserializing != null)
            {
                invokeAttributedMethods(m_MethodsOnDeserializing, instance, streamingContext);
            }

            if (m_Deserialize != null)
            {
                m_Deserialize(Schema, reader, registry, refs, ref instance, streamingContext);
            }
            else
            {
                var info = deserializeInfo(reader, registry, refs, streamingContext);

                //20171223 DKh Handle SerializationInfo.SetType() redefinition of serialized type
                if (instance.GetType() != info.ObjectType)
                {
                    instance = FormatterServices.GetUninitializedObject(info.ObjectType);//ref instance is re-allocated with a different type
                }

                refs.AddISerializableFixup(instance, info);
            }

            if (m_MethodsOnDeserialized != null)
            {
                refs.AddOnDeserializedCallback(instance, this);
            }
        }
Example #2
0
        public void DeserializeInstance(SlimReader reader, TypeRegistry registry, RefPool refs, ref object instance, StreamingContext streamingContext)
        {
            if (m_MethodsOnDeserializing != null)
            {
                invokeAttributedMethods(m_MethodsOnDeserializing, instance, streamingContext);
            }

            if (m_Deserialize != null)
            {
                m_Deserialize(Schema, reader, registry, refs, ref instance, streamingContext);
            }
            else
            {
                var info = deserializeInfo(reader, registry, refs, streamingContext);
                refs.AddISerializableFixup(instance, info);
            }

            if (m_MethodsOnDeserialized != null)
            {
                refs.AddOnDeserializedCallback(instance, this);
            }
        }