public bool RegisterSerializer(ILiteSerializer serializer, short handle) { if (serializer == null) { throw new ArgumentNullException("serializer"); } lock (_typeSerializerMap.SyncRoot) { if (_handleSerializerMap.Contains(handle)) { throw new ArgumentException("Specified type handle is already registered."); } if (GetSerializerForTypeStrict(serializer.Type) != null) { throw new ArgumentException("Type '" + serializer.Type.FullName + "' is already registered"); } if (!_typeSerializerMap.Contains(serializer.Type.FullName)) { serializer.Handle = handle; _typeSerializerMap.Add(serializer.Type.FullName, serializer); _handleSerializerMap.Add(serializer.Handle, serializer); return(true); } } return(false); }
public void WriteObject(object obj) { ILiteSerializer serializer = _serializationContext.SerializerFactory.GetSerializerForObject(obj); _writer.Write(serializer.Handle); serializer.Write(this, obj); }
public bool RegisterSerializer(ILiteSerializer serializer) { if (serializer == null) { throw new ArgumentNullException("serializer"); } return(RegisterSerializer(serializer, ++_newhandle)); }
internal ILiteSerializer GetSerializerForHandle(short handle) { ILiteSerializer serializer = (ILiteSerializer)_handleSerializerMap[handle]; if (serializer == null) { serializer = _defaultSerializer; } return(serializer); }
internal ILiteSerializer GetSerializerForType(Type type) { ILiteSerializer serializer = (ILiteSerializer)_typeSerializerMap[type.FullName]; if (serializer == null) { serializer = _defaultSerializer; } return(serializer); }
public void WriteObjectAs(Type type, object obj) { if (type == null) { throw new ArgumentNullException("type"); } ILiteSerializer serializer = _serializationContext.SerializerFactory.GetSerializerForType(type); serializer.Write(this, obj); }
public void UnregisterSerializer(ILiteSerializer serializer) { if (serializer == null) { throw new ArgumentNullException("serializer"); } lock (_typeSerializerMap.SyncRoot) { _typeSerializerMap.Remove(serializer.Type.FullName); _handleSerializerMap.Remove(serializer.Handle); } }
public void RegisterLiteSerializableType(Type type) { if (type == null) { throw new ArgumentNullException("type"); } if (GetSerializerForTypeStrict(type) != null) { throw new ArgumentException("Type '" + type.FullName + "' is already registered"); } ILiteSerializer serializer = null; if (typeof(IDictionary).IsAssignableFrom(type)) { serializer = new LiteDictionarySerializer(type); } else if (type.IsArray) { serializer = new LiteArraySerializer(type); } else if (typeof(IList).IsAssignableFrom(type)) { serializer = new LiteIListSerializer(type); } else if (typeof(ILiteSerializable).IsAssignableFrom(type)) { serializer = new LiteILiteSerializableSerializer(type); } else if (typeof(Enum).IsAssignableFrom(type)) { serializer = new LiteEnumSerializer(type); } if (serializer == null) { throw new ArgumentException("No appropriate serializer found for type " + type.FullName); } RegisterSerializer(serializer); }
public void UnregisterLiteSerializableType(Type type) { if (type == null) { throw new ArgumentNullException("type"); } if (GetSerializerForTypeStrict(type) == null) { return; } if (type.IsArray || typeof(IDictionary).IsAssignableFrom(type) || typeof(IList).IsAssignableFrom(type) || typeof(ILiteSerializable).IsAssignableFrom(type) || typeof(Enum).IsAssignableFrom(type)) { ILiteSerializer serializer = GetSerializerForTypeStrict(type); UnregisterSerializer(serializer); } }