using Microsoft.AspNet.DependencyInjection; using Microsoft.AspNet.DependencyInjection.NestedProviders; using Microsoft.AspNet.FileSystems; using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.Razor; namespace Microsoft.AspNet.Mvc.Startup { public class MvcServices { public ServiceProvider Services { get; private set; } public MvcServices(string appRoot) { Services = new ServiceProvider(); Add(); Add(); Add(); Add(); Add(); Add(); Add(); Add(); Add(); Add(); Add(); AddInstance(new PhysicalFileSystem(appRoot)); AddInstance(new MvcRazorHost(typeof(RazorView).FullName)); #if NET45 Add(); #endif Add(); Add(); Add(); // This is temporary until DI has some magic for it Add, NestedProviderManager>(); Add, NestedProviderManager>(); Add, TypeMethodBasedActionDescriptorProvider>(); Add, ActionInvokerProvider>(); } private void Add() where TU : T { Services.Add(); } private void AddInstance(object instance) { Services.AddInstance(instance); } } }