public void AddScoped <TConcreteType>(string name)
            where TConcreteType : TService
        {
            var registration = new NamedServiceRegistration <TService>(_serviceProvider, typeof(TConcreteType), Lifetime.Scoped);

            _namedRegistrations.Add(name, registration);
        }
        public void AddScoped(string name)
        {
            var registration = new NamedServiceRegistration <TService>(_serviceProvider, typeof(TService), Lifetime.Scoped);

            _namedRegistrations.Add(name, registration);
        }
        /// <summary>
        /// Add an instance to be obtained by name.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="instance"></param>
        /// <param name="registrationOwnsInstance">true means if this instance implements IDisposable, Dispose will be called on this instance when the underlying registration is Disposed. false means you take care of disposal of this instance using your own mechanism, or perhaps its managed by a container already etc.</param>
        public void AddSingleton(string name, TService instance, bool registrationOwnsInstance = false)
        {
            var registration = new NamedServiceRegistration <TService>(instance, registrationOwnsInstance);

            _namedRegistrations.Add(name, registration);
        }