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); }
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)); }