Exemplo n.º 1
0
        public void Can_open_scope_without_container_for_stateless_context()
        {
            var fakeContextItems = new Dictionary <object, object>();

            var c = new Container(scopeContext: new HttpContextScopeContext(() => fakeContextItems));

            c.Register <Blah>(Reuse.InWebRequest);

            var contextProxy = new HttpContextScopeContext(() => fakeContextItems);

            using (contextProxy.SetCurrent(current => Scope.Of(current, Reuse.WebRequestScopeName)))
            {
                var expected = c.Resolve <Blah>();
                Assert.AreSame(expected, c.Resolve <Blah>());

                using (contextProxy.SetCurrent(current => Scope.Of(current, null)))
                {
                    Assert.AreSame(expected, c.Resolve <Blah>());
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>Creates new container from original one with <see cref="HttpContextScopeContext"/>.
        /// Then registers MVC controllers in container,
        /// sets <see cref="DryIocFilterAttributeFilterProvider"/> as filter provider,
        /// and at last sets container as <see cref="DependencyResolver"/>.</summary>
        /// <param name="container">Original container.</param>
        /// <param name="controllerAssemblies">(optional) By default uses <see cref="GetReferencedAssemblies"/>.</param>
        /// <param name="scopeContext">Specific scope context to use, by default MVC uses <see cref="HttpContextScopeContext"/>.</param>
        /// <returns>New container with applied Web context.</returns>
        public static IContainer WithMvc(this IContainer container,
                                         IEnumerable <Assembly> controllerAssemblies = null, IScopeContext scopeContext = null)
        {
            container.ThrowIfNull();

            if (scopeContext == null && !(container.ScopeContext is HttpContextScopeContext))
            {
                scopeContext = new HttpContextScopeContext();
            }
            if (scopeContext != null)
            {
                container = container.With(scopeContext: scopeContext);
            }

            container.RegisterMvcControllers(controllerAssemblies);

            container.SetFilterAttributeFilterProvider(FilterProviders.Providers);

            DependencyResolver.SetResolver(new DryIocDependencyResolver(container));

            return(container);
        }
Exemplo n.º 3
0
        /// <summary>Creates new container from original one with <see cref="HttpContextScopeContext"/>.
        /// Then registers MVC controllers in container, 
        /// sets <see cref="DryIocFilterAttributeFilterProvider"/> as filter provider,
        /// and at last sets container as <see cref="DependencyResolver"/>.</summary>
        /// <param name="container">Original container.</param>
        /// <param name="controllerAssemblies">(optional) By default uses <see cref="GetReferencedAssemblies"/>.</param>
        /// <param name="scopeContext">Specific scope context to use, by default MVC uses <see cref="HttpContextScopeContext"/>.</param>
        /// <returns>New container with applied Web context.</returns>
        public static IContainer WithMvc(this IContainer container, 
            IEnumerable<Assembly> controllerAssemblies = null, IScopeContext scopeContext = null)
        {
            container.ThrowIfNull();

            if (scopeContext == null && !(container.ScopeContext is HttpContextScopeContext))
                scopeContext = new HttpContextScopeContext();
            if (scopeContext != null)
                container = container.With(scopeContext: scopeContext);

            container.RegisterMvcControllers(controllerAssemblies);

            container.SetFilterAttributeFilterProvider(FilterProviders.Providers);

            DependencyResolver.SetResolver(new DryIocDependencyResolver(container));

            return container;
        }