diff --git a/src/Microsoft.AspNet.Mvc/MvcServices.cs b/src/Microsoft.AspNet.Mvc/MvcServices.cs index f191172f4e..1d663776aa 100644 --- a/src/Microsoft.AspNet.Mvc/MvcServices.cs +++ b/src/Microsoft.AspNet.Mvc/MvcServices.cs @@ -16,119 +16,62 @@ namespace Microsoft.AspNet.Mvc public static IEnumerable GetDefaultServices(IConfiguration configuration, IApplicationEnvironment env) { - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(new PhysicalFileSystem(env.ApplicationBasePath)); + var describe = new ServiceDescriber(configuration); - yield return DescribeService(new MvcRazorHost(typeof(RazorView).FullName)); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Instance(new PhysicalFileSystem(env.ApplicationBasePath)); + + yield return describe.Instance(new MvcRazorHost(typeof(RazorView).FullName)); #if NET45 // TODO: Container chaining to flow services from the host to this container - yield return DescribeService(configuration); + yield return describe.Transient(); // TODO: Make this work like normal when we get container chaining // TODO: Update this when we have the new host services - // AddInstance(new RoslynCompilationService(hostServiceProvider)); + // yield return describe.Instance(new RoslynCompilationService(hostServiceProvider)); #endif - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); // This is temporary until DI has some magic for it - yield return DescribeService, - NestedProviderManager>(configuration); - yield return DescribeService, - NestedProviderManager>(configuration); - yield return DescribeService, - ReflectedActionDescriptorProvider>(configuration); - yield return DescribeService, - ReflectedActionInvokerProvider>(configuration); + yield return describe.Transient, + NestedProviderManager>(); + yield return describe.Transient, + NestedProviderManager>(); + yield return describe.Transient, + ReflectedActionDescriptorProvider>(); + yield return describe.Transient, + ReflectedActionInvokerProvider>(); - yield return DescribeService(configuration); - yield return DescribeService(configuration); + yield return describe.Transient(); + yield return describe.Transient(); - yield return DescribeService(configuration); - yield return DescribeService(configuration); + yield return describe.Transient(); + yield return describe.Transient(); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); - yield return DescribeService(configuration); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); + yield return describe.Transient(); - yield return DescribeService, NestedProviderManager>(configuration); - yield return DescribeService, DefaultFilterProvider>(configuration); + yield return describe.Transient, NestedProviderManager>(); + yield return describe.Transient, DefaultFilterProvider>(); - yield return DescribeService(configuration); - } - - public static IServiceDescriptor DescribeService( - IConfiguration configuration, - LifecycleKind lifecycle = LifecycleKind.Transient) - { - return DescribeService(typeof(TService), typeof(TImplementation), configuration, lifecycle); - } - - public static IServiceDescriptor DescribeService( - TService implementation, - LifecycleKind lifecycle = LifecycleKind.Transient) - { - return new ServiceTypeDescriptor(typeof(TService), implementation, lifecycle); - } - - public static IServiceDescriptor DescribeService( - Type serviceType, - Type implementationType, - IConfiguration configuration, - LifecycleKind lifecycle) - { - var serviceTypeName = serviceType.FullName; - var implementationTypeName = configuration.Get(serviceTypeName); - - if (!String.IsNullOrEmpty(implementationTypeName)) - { - try - { - implementationType = Type.GetType(implementationTypeName); - } - catch (Exception ex) - { - throw new Exception(string.Format("TODO: unable to locate implementation {0} for service {1}", implementationTypeName, serviceTypeName), ex); - } - } - return new ServiceTypeDescriptor(serviceType, implementationType, lifecycle); - } - - public class ServiceTypeDescriptor : IServiceDescriptor - { - public ServiceTypeDescriptor(Type serviceType, Type implementationType, LifecycleKind lifecycle) - { - ServiceType = serviceType; - ImplementationType = implementationType; - Lifecycle = lifecycle; - } - - public ServiceTypeDescriptor(Type serviceType, object implementation, LifecycleKind lifecycle) - { - ServiceType = serviceType; - ImplementationInstance = implementation; - Lifecycle = lifecycle; - } - - public LifecycleKind Lifecycle { get; private set; } - public Type ServiceType { get; private set; } - public Type ImplementationType { get; private set; } - public object ImplementationInstance { get; private set; } + yield return describe.Transient(); } } }