private object ReadStructTypeValue(RSBinaryReader _binaryReader, out Type _objectType, object _object)
        {
            // Get object type
            UInt32 _typeID = _binaryReader.ReadUInt32();

            _objectType = TypeMetadata.GetType(_typeID);

            // Read object refernece
            Dictionary <string, RuntimeSerializationEntry> _initValuesContainer = new Dictionary <string, RuntimeSerializationEntry>();
            Dictionary <string, RuntimeSerializationEntry> _serValuesContainer  = new Dictionary <string, RuntimeSerializationEntry>();
            RuntimeSerializationInfo _serializationInfo = new RuntimeSerializationInfo(_objectType, _initValuesContainer, _serValuesContainer);

            // Read initializers and properties
            ReadSerializationContainer(_binaryReader, ref _initValuesContainer);
            ReadSerializationContainer(_binaryReader, ref _serValuesContainer);

            if (_object == null)
            {
                _object = CreateInstance(_binaryReader, _serializationInfo);
            }

            // Set object value
            _object = SetObjectData(_object, _serializationInfo);

            // Trigger deserialization callback
            if (typeof(IRuntimeSerializationCallback).IsAssignableFrom(_objectType))
            {
                ((IRuntimeSerializationCallback)_object).OnAfterRuntimeDeserialize();
            }

            return(_object);
        }
Exemple #2
0
        public void EmitReferenceOfNonGeneric()
        {
            TypeMetadata obj  = TypeMetadata.EmitReference(typeof(object));
            PropertyInfo Null = obj.GetType().GetProperty("GenericArguments",
                                                          BindingFlags.Public | BindingFlags.Instance);

            Assert.IsNull(Null.GetValue(obj));
        }
        private object ReadPrimitiveTypeValue(RSBinaryReader _binaryReader, out Type _objectType)
        {
            // Get object type
            UInt32 _typeID = _binaryReader.ReadUInt32();

            _objectType = TypeMetadata.GetType(_typeID);

            // Get object value
            return(_binaryReader.ReadPrimitiveValue((TypeCode)_typeID));
        }