Ejemplo n.º 1
0
        private bool UnregisterMapperSync <T>()
        {
            var wrapper = JsonSerializatorCache <T> .Unregister(this);

            if (wrapper == null)
            {
                return(false);
            }
            _mapperWrappers.Remove(wrapper);
            return(true);
        }
Ejemplo n.º 2
0
        public IJsonSerializator <T> GetSerializator <T>()
        {
            var wrapper = JsonSerializatorCache <T> .GetJsonSerializator(this);

            if (wrapper != null)
            {
                return(wrapper.JsonSerializator);
            }
            wrapper = BuildJsonSerializator <T>();
            if (wrapper != null)
            {
                return(wrapper.JsonSerializator);
            }
            return(ExceptionHelper.ThrowMapperNotRegisteredException <T>());
        }
Ejemplo n.º 3
0
        private MapperWrapper <T> BuildJsonSerializator <T>()
        {
            lock (_lock)
            {
                var existingWrapper = JsonSerializatorCache <T> .GetJsonSerializator(this);

                if (existingWrapper != null)
                {
                    return(existingWrapper);
                }
                MapperWrapper <T> createdWrapper = BuildMapperWrapperSync <T>();
                JsonSerializatorCache <T> .Register(createdWrapper);

                _mapperWrappers.Add(createdWrapper);
                return(createdWrapper);
            }
        }
Ejemplo n.º 4
0
        internal bool RegisterMapper <T>(IJsonMapper <T> mapper)
        {
            if (mapper == null)
            {
                return(false);
            }
            lock (_lock)
            {
                if (_frozen || _disposed)
                {
                    return(false);
                }
                UnregisterMapperSync <T>();
                MapperWrapper <T> wrapper = new MapperWrapper <T>(this, mapper);
                JsonSerializatorCache <T> .Register(wrapper);

                _mapperWrappers.Add(wrapper);
                return(true);
            }
        }