Beispiel #1
0
        private void SafeRegister(Type type, ISerializerAdapter serializer)
        {
            if (constantTypesMap.ContainsKey(type))
            {
                throw new ArgumentException("[" + type + "] serializer cannot be overridden!");
            }
            var current = typeMap.GetOrAdd(type, serializer);

            if (current != null && current.GetImpl().GetType() != serializer.GetImpl().GetType())
            {
                throw new InvalidOperationException("Serializer[" + current.GetImpl() +
                                                    "] has been already registered for type: " + type);
            }
            current = idMap.GetOrAdd(serializer.GetTypeId(), serializer);
            if (current != null && current.GetImpl().GetType() != serializer.GetImpl().GetType())
            {
                throw new InvalidOperationException("Serializer [" + current.GetImpl() +
                                                    "] has been already registered for type-id: " +
                                                    serializer.GetTypeId());
            }
        }