Пример #1
0
        /// <summary>Integrates Unity when the application starts.</summary>
        public static void Start()
        {
            // Use UnityHierarchicalDependencyResolver if you want to use a new child container for each IHttpController resolution.
            var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.GetConfiguredContainer());

            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        public void When_resolving_type_with_container_controlled_lifetime_then_returns_same_instance_every_time()
        {
            using (var container = new UnityContainer())
            {
                container.RegisterType <IFoo, Foo>(new ContainerControlledLifetimeManager());
                using (var resolver = new UnityHierarchicalDependencyResolver(container))
                {
                    IFoo parentResolve = (IFoo)resolver.GetService(typeof(IFoo));
                    IFoo scope1Resolve;
                    IFoo scope2Resolve;

                    using (var scope = resolver.BeginScope())
                    {
                        scope1Resolve = (IFoo)scope.GetService(typeof(IFoo));
                    }

                    using (var scope = resolver.BeginScope())
                    {
                        scope2Resolve = (IFoo)scope.GetService(typeof(IFoo));
                    }

                    Assert.IsNotNull(parentResolve);
                    Assert.AreSame(parentResolve, scope1Resolve);
                    Assert.AreSame(parentResolve, scope2Resolve);
                }
            }
        }
Пример #3
0
        /// <summary>Integrates Unity when the application starts.</summary>
        public static void Start()
        {
            // Use UnityHierarchicalDependencyResolver if you want to use a new child container for each IHttpController resolution.
            var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.GetConfiguredContainer());

            //var resolver = new UnityDependencyResolver(UnityConfig.GetConfiguredContainer());
            // Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
 public void When_resolving_unregistered_type_then_returns_null()
 {
     using (var container = new UnityContainer())
     {
         using (var resolver = new UnityHierarchicalDependencyResolver(container))
         {
             Assert.IsNull(resolver.GetService(typeof(IFoo)));
         }
     }
 }
Пример #5
0
        /// <summary>Integrates Unity when the application starts.</summary>
        public static void Start()
        {
            // Use UnityHierarchicalDependencyResolver if you want to use a new child container for each IHttpController resolution.
            var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.GetConfiguredContainer());

            //var resolver = new UnityDependencyResolver(UnityConfig.GetConfiguredContainer());

            GlobalConfiguration.Configuration.DependencyResolver = resolver;
            var reflector = UnityConfig.GetConfiguredContainer().Resolve(typeof(IReflector), null) as IReflector;

            reflector.Reflect();
        }
        /// <summary>
        /// Integrates Unity when the application starts.
        /// </summary>
        public static void Start()
        {
            // Use UnityHierarchicalDependencyResolver if you want to use
            // a new child container for each IHttpController resolution.
            AppLog.TraceVerbose($"Starting WebAPI Unity Dependency Injection...");

            var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.Container);

            //var resolver = new UnityDependencyResolver(UnityConfig.Container);

            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
 public void When_resolving_unregistered_type_inside_scope_then_throws()
 {
     using (var container = new UnityContainer())
     {
         using (var resolver = new UnityHierarchicalDependencyResolver(container))
         {
             using (var scope = resolver.BeginScope())
             {
                 AssertThrows <ResolutionFailedException>(() => scope.GetService(typeof(IFoo)));
             }
         }
     }
 }
 public void When_resolving_then_returns_registered_instance()
 {
     using (var container = new UnityContainer())
     {
         container.RegisterInstance <IFoo>(new Foo {
             TestProperty = "value"
         });
         using (var resolver = new UnityHierarchicalDependencyResolver(container))
         {
             var actual = (IFoo)resolver.GetService(typeof(IFoo));
             Assert.AreEqual("value", actual.TestProperty);
         }
     }
 }
        public void When_disposing_resolver_then_disposes_container()
        {
            using (var container = new UnityContainer())
            {
                container.RegisterInstance <IFoo>(new Foo {
                    TestProperty = "value"
                });
                var resolver = new UnityHierarchicalDependencyResolver(container);
                resolver.Dispose();

                // ObjectDisposedException?
                AssertThrows <ResolutionFailedException>(() => container.Resolve(typeof(IFoo)));
            }
        }
 public void When_resolving_concrete_controller_inside_scope_then_returns_injected_instance()
 {
     using (var container = new UnityContainer())
     {
         container.RegisterInstance <IFoo>(new Foo {
             TestProperty = "value"
         });
         using (var resolver = new UnityHierarchicalDependencyResolver(container))
         {
             using (var scope = resolver.BeginScope())
             {
                 var actual = (TestController)scope.GetService(typeof(TestController));
                 Assert.AreEqual("value", actual.Foo.TestProperty);
             }
         }
     }
 }
        public void When_disposing_scope_then_does_not_dispose_container()
        {
            using (var container = new UnityContainer())
            {
                container.RegisterInstance <IFoo>(new Foo {
                    TestProperty = "value"
                });
                using (var resolver = new UnityHierarchicalDependencyResolver(container))
                {
                    resolver.BeginScope().Dispose();

                    var actual = (IFoo)resolver.GetService(typeof(IFoo));

                    Assert.AreEqual("value", actual.TestProperty);
                }
            }
        }
 public void When_resolving_multiple_then_returns_all_registered_instances()
 {
     using (var container = new UnityContainer())
     {
         container.RegisterInstance <IFoo>("instance1", new Foo {
             TestProperty = "value1"
         });
         container.RegisterInstance <IFoo>("instance2", new Foo {
             TestProperty = "value2"
         });
         using (var resolver = new UnityHierarchicalDependencyResolver(container))
         {
             var actual = resolver.GetServices(typeof(IFoo)).Cast <IFoo>().ToList();
             Assert.IsTrue(actual.Any(x => x.TestProperty == "value1"));
             Assert.IsTrue(actual.Any(x => x.TestProperty == "value2"));
         }
     }
 }
        public void When_resolving_type_with_hierarchical_lifetime_then_returns_different_instance_in_each_scope()
        {
            using (var container = new UnityContainer())
            {
                container.RegisterType <IFoo, Foo>(new HierarchicalLifetimeManager());
                using (var resolver = new UnityHierarchicalDependencyResolver(container))
                {
                    IFoo parentResolve = (IFoo)resolver.GetService(typeof(IFoo));
                    IFoo scope1Resolve1;
                    IFoo scope1Resolve2;
                    IFoo scope2Resolve1;
                    IFoo scope2Resolve2;

                    using (var scope = resolver.BeginScope())
                    {
                        scope1Resolve1 = (IFoo)scope.GetService(typeof(IFoo));
                        scope1Resolve2 = (IFoo)scope.GetService(typeof(IFoo));
                    }

                    using (var scope = resolver.BeginScope())
                    {
                        scope2Resolve1 = (IFoo)scope.GetService(typeof(IFoo));
                        scope2Resolve2 = (IFoo)scope.GetService(typeof(IFoo));
                    }

                    Assert.IsNotNull(parentResolve);
                    Assert.IsNotNull(scope1Resolve1);
                    Assert.IsNotNull(scope1Resolve2);
                    Assert.IsNotNull(scope2Resolve1);
                    Assert.IsNotNull(scope2Resolve2);

                    Assert.AreNotSame(parentResolve, scope1Resolve1);
                    Assert.AreNotSame(parentResolve, scope2Resolve1);

                    Assert.AreNotSame(scope1Resolve1, scope2Resolve1);

                    Assert.AreSame(scope1Resolve1, scope1Resolve2);

                    Assert.AreSame(scope2Resolve1, scope2Resolve2);
                }
            }
        }
Пример #14
0
        public static void Start()
        {
            //UnityConfig.SetupTypeMappings(RegisterTypes);

            var container = UnityConfig.Container;

            RegisterTypes(container);
            //MVC
            FilterProviders.Providers.Remove(FilterProviders.Providers.OfType <FilterAttributeFilterProvider>().First());
            FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));

            DependencyResolver.SetResolver(new Microsoft.Practices.Unity.Mvc.UnityDependencyResolver(container));

            Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));

            //Web API
            var resolver = new UnityHierarchicalDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
Пример #15
0
        /// <summary>Integrates Unity when the application starts.</summary>
        public static void Start()
        {
            var config    = GlobalConfiguration.Configuration;
            var container = UnityConfig.GetConfiguredContainer();

            container.RegisterInstance(config);

            // web api setup
            container.RegisterInstance <IHttpControllerActivator>(new WebApiUnityControllerActivator(config.Services.GetHttpControllerActivator()));
            container.RegisterType <IControllerActivator, SiteUnityControllerActivator>();

            // Set MVC controller factory
            ControllerBuilder.Current.SetControllerFactory(new UnityMvcControllerFactory(container));

            // Use UnityHierarchicalDependencyResolver if you want to use a new child container for each IHttpController resolution.
            var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.GetConfiguredContainer());

            //var resolver = new UnityDependencyResolver(UnityConfig.GetConfiguredContainer());

            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        public void Configuration(IAppBuilder app)
        {
            // IoC
            var container = UnityConfig.GetConfiguredContainer();
            var resolver  = new UnityHierarchicalDependencyResolver(container);

            // Owin config
            //app.UseDependencyResolverScope(resolver);
            //app.UseCors(CorsOptions.AllowAll);
            if (UseOwinHmac)
            {
                app.UseHmacAuthentication(resolver);
            }

            // NB Must be before WebApiConfig.Register
            //ConfigureAuth(app);
            app.UseStageMarker(PipelineStage.Authenticate);
            // NB Needs to be after ConfigureAuth so we can enhance the authenticated principal
            //app.UseClaimsTransformation(resolver);
            app.UseStageMarker(PipelineStage.PostAuthenticate);

            // See http://stackoverflow.com/questions/33402654/web-api-with-owin-throws-objectdisposedexception-for-httpmessageinvoker
            // and http://aspnetwebstack.codeplex.com/workitem/2091

            if (SelfHost)
            {
                // WebAPI configuration
                Config = new HttpConfiguration
                {
                    DependencyResolver = resolver
                };

                if (!UseOwinHmac)
                {
                    Config.Filters.Add(new HmacAuthenticationAttribute());
                }

                WebApiConfig.Register(Config);
                app.UseWebApi(Config);
            }
            else
            {
                Config = GlobalConfiguration.Configuration;
                Config.DependencyResolver = resolver;

                if (!UseOwinHmac)
                {
                    Config.Filters.Add(new HmacAuthenticationAttribute());
                }

                // http://stackoverflow.com/questions/19907226/asp-net-webapi-2-attribute-routing-not-working
                // Needs to be before RouteConfig.RegisterRoutes(RouteTable.Routes);
                GlobalConfiguration.Configure(WebApiConfig.Register);
            }

            // MVC configuration
            // NB Have to flip sense as run before static
            if (!IgnoreMvc)
            {
                FilterProviders.Providers.Remove(FilterProviders.Providers.OfType <FilterAttributeFilterProvider>().First());
                FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
                DependencyResolver.SetResolver(new Unity.AspNet.Mvc.UnityDependencyResolver(container));

                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                RouteConfig.RegisterRoutes(RouteTable.Routes);

                MvcHandler.DisableMvcResponseHeader = true;
            }
        }
Пример #17
0
        /// <summary>Integrates Unity when the application starts.</summary>
        public static void Start()
        {
            var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.GetConfiguredContainer());

            GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
Пример #18
0
        public static System.Web.Http.Dependencies.IDependencyResolver GetDependensyResolver()
        {
            var resolver = new UnityHierarchicalDependencyResolver(Container.Value);

            return(resolver);
        }