/// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="implementationProvider">The type implementation provider to use.</param>
        /// <param name="options">The options used to determine the lifestyle of types.</param>
        public AttributeLifestyleResolver(IImplementationProvider implementationProvider, AttributeLifestyleResolverOptions options)
        {
            this.implementationProvider = implementationProvider;
            this.options = options;

            this.resolvedLifestyles = new Dictionary<Type, Lifestyle>();
        }
        /// <summary>
        /// Constructor.  Initializes the class with the default extensibility providers.
        /// </summary>
        /// <param name="rootNamespace">Root namespace of the application.  All auto-registration will be restricted to 
        /// types within this namespace.</param>
        public AutoRegistrationOptions(string rootNamespace)
        { 
            var enabledOptions = new AutoRegistrationEnabledProvider.AttributeAutoRegistrationEnabledProviderOptions(rootNamespace);
            AutoRegistrationEnabledProvider = new AutoRegistrationEnabledProvider.AttributeAutoRegistrationEnabledProvider(enabledOptions);

            ImplementationProvider = new ImplementationProvider.AutoRegistrationImplementationProvider(AutoRegistrationEnabledProvider);

            var attrOptions = new LifestyleResolver.AttributeLifestyleResolverOptions();
            LifestyleResolver = new LifestyleResolver.AttributeLifestyleResolver(ImplementationProvider, attrOptions);

            RegisterMefExtensions();
          
            RegisterDecorators = false;
        }