public void AllowRegisterSameTypeMultipleTimes()
 {
     Assert.DoesNotThrow(() =>
     {
         _namedRegistrator.Add("T1", typeof(T2));
         _namedRegistrator.Add(null, typeof(T2));
         _namedRegistrator.Add("T2", typeof(T2));
         _namedRegistrator.Add("T3", typeof(T1));
         _namedRegistrator.Add("T4", typeof(T1));
     });
 }
        /// <summary>
        /// Зарегистрировать тип с указанным именем.
        /// </summary>
        /// <param name="type">Тип.</param>
        /// <param name="name">Имя типа.</param>
        /// <exception cref="InvalidOperationException">
        /// Если параметр type не реализует интерфейс <see cref="TInterface" />.
        /// </exception>
        /// <exception cref="InvalidOperationException">
        /// Если тип с таким именем уже зарегистрирован.
        /// </exception>
        /// <returns>Конфигуратор именованных типов.</returns>
        public INamedRegistratorBuilder <TDiscriminator, TInterface> Add(Type type, TDiscriminator?name = default)
        {
            _namedRegistrator.Add(name, type);

            _services.TryAdd(new ServiceDescriptor(type, type, _serviceLifetime));
            if (_equalityComparer.Equals(name, default))
            {
                _services.TryAdd(new ServiceDescriptor(
                                     typeof(TInterface),
                                     sp => sp.GetRequiredService(type),
                                     _serviceLifetime)
                                 );
            }

            return(this);
        }