public override IComponentRegistry Register(Type dependencyType, Type implementationType, Lifestyle lifestyle)
        {
            Guard.AgainstNull(dependencyType, "dependencyType");
            Guard.AgainstNull(implementationType, "implementationType");

            base.Register(dependencyType, implementationType, lifestyle);

            try
            {
                switch (lifestyle)
                {
                case Lifestyle.Transient:
                {
                    _registry.For(dependencyType).Use(implementationType).Transient();

                    break;
                }

                default:
                {
                    _registry.ForSingletonOf(dependencyType).Use(implementationType).Singleton();

                    break;
                }
                }
            }
            catch (Exception ex)
            {
                throw new TypeRegistrationException(ex.Message, ex);
            }

            return(this);
        }