From a5cb050b976448ed5edc8c6e235a07d323d34dab Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Thu, 13 Mar 2014 13:10:10 -0700 Subject: [PATCH] Using AutoFac to register open generic service types --- samples/MvcSample.Web/Startup.cs | 6 ++++++ samples/MvcSample/Startup.cs | 10 +++++++--- src/Microsoft.AspNet.Mvc/MvcServices.cs | 10 ++-------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/samples/MvcSample.Web/Startup.cs b/samples/MvcSample.Web/Startup.cs index e885d7a632..522edda750 100644 --- a/samples/MvcSample.Web/Startup.cs +++ b/samples/MvcSample.Web/Startup.cs @@ -2,7 +2,9 @@ using System; using Autofac; using Microsoft.AspNet.Abstractions; +using Microsoft.AspNet.DependencyInjection; using Microsoft.AspNet.DependencyInjection.Autofac; +using Microsoft.AspNet.DependencyInjection.NestedProviders; using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Routing; @@ -18,6 +20,10 @@ namespace MvcSample.Web AutofacRegistration.Populate(containerBuilder, builder.ServiceProvider, services); containerBuilder.RegisterInstance(new PassThroughAttribute()); + // Temporary until we have support for open generics in our DI system. + containerBuilder.RegisterGeneric(typeof(NestedProviderManager<>)).As(typeof(INestedProviderManager<>)); + containerBuilder.RegisterGeneric(typeof(NestedProviderManagerAsync<>)).As(typeof(INestedProviderManagerAsync<>)); + var serviceProvider = containerBuilder.Build().Resolve(); var routes = new RouteCollection() diff --git a/samples/MvcSample/Startup.cs b/samples/MvcSample/Startup.cs index 9e512a9c39..13bb0928c9 100644 --- a/samples/MvcSample/Startup.cs +++ b/samples/MvcSample/Startup.cs @@ -1,13 +1,13 @@ -#if NET45 + +#if NET45 using Autofac; using System; using Microsoft.AspNet.Abstractions; -using Microsoft.AspNet.ConfigurationModel; using Microsoft.AspNet.DependencyInjection; using Microsoft.AspNet.DependencyInjection.Autofac; +using Microsoft.AspNet.DependencyInjection.NestedProviders; using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Routing; -using Microsoft.Net.Runtime; using Owin; namespace MvcSample @@ -37,6 +37,10 @@ namespace MvcSample AutofacRegistration.Populate(containerBuilder, _serviceProvider, services); containerBuilder.RegisterInstance(new PassThroughAttribute()); + // Temporary until we have support for open generics in our DI system. + containerBuilder.RegisterGeneric(typeof(NestedProviderManager<>)).As(typeof(INestedProviderManager<>)); + containerBuilder.RegisterGeneric(typeof(NestedProviderManagerAsync<>)).As(typeof(INestedProviderManagerAsync<>)); + var serviceProvider = containerBuilder.Build().Resolve(); var routes = new RouteCollection() diff --git a/src/Microsoft.AspNet.Mvc/MvcServices.cs b/src/Microsoft.AspNet.Mvc/MvcServices.cs index 3c3eb8d3ae..1265e3158a 100644 --- a/src/Microsoft.AspNet.Mvc/MvcServices.cs +++ b/src/Microsoft.AspNet.Mvc/MvcServices.cs @@ -1,7 +1,7 @@ -using System.Collections.Generic; + +using System.Collections.Generic; using Microsoft.AspNet.ConfigurationModel; using Microsoft.AspNet.DependencyInjection; -using Microsoft.AspNet.DependencyInjection.NestedProviders; using Microsoft.AspNet.Mvc.Filters; using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.Razor; @@ -38,11 +38,6 @@ namespace Microsoft.AspNet.Mvc yield return describe.Transient(); yield return describe.Transient(); - // This is temporary until DI has some magic for it - yield return describe.Transient, - NestedProviderManager>(); - yield return describe.Transient, - NestedProviderManager>(); yield return describe.Transient, ReflectedActionDescriptorProvider>(); yield return describe.Transient, @@ -63,7 +58,6 @@ namespace Microsoft.AspNet.Mvc yield return describe.Transient(); - yield return describe.Transient, NestedProviderManager>(); yield return describe.Transient, DefaultFilterProvider>(); yield return describe.Transient();