// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Collections.Generic; using Microsoft.AspNet.Mvc.Core; using Microsoft.AspNet.Mvc.Filters; using Microsoft.AspNet.Mvc.ModelBinding; using Microsoft.AspNet.Mvc.OptionDescriptors; using Microsoft.AspNet.Mvc.Razor; using Microsoft.AspNet.Mvc.Razor.Compilation; using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Security; using Microsoft.Framework.ConfigurationModel; using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection.NestedProviders; using Microsoft.Framework.OptionsModel; namespace Microsoft.AspNet.Mvc { public class MvcServices { public static IEnumerable GetDefaultServices() { return GetDefaultServices(new Configuration()); } public static IEnumerable GetDefaultServices(IConfiguration configuration) { var describe = new ServiceDescriber(configuration); yield return describe.Transient, MvcOptionsSetup>(); yield return describe.Transient(); yield return describe.Singleton(); yield return describe.Scoped(); yield return describe.Transient(); yield return describe.Transient(); yield return describe.Transient(); yield return describe.Instance(new MvcRazorHost(typeof(RazorPage).FullName)); yield return describe.Transient(); yield return describe.Singleton(); yield return describe.Scoped(); yield return describe.Singleton(); yield return describe.Singleton(); yield return describe.Singleton(); // Virtual path view factory needs to stay scoped so views can get get scoped services. yield return describe.Scoped(); yield return describe.Singleton(); yield return describe.Transient, ReflectedActionDescriptorProvider>(); yield return describe.Transient, ReflectedActionInvokerProvider>(); yield return describe.Singleton(); yield return describe.Transient(); yield return describe.Scoped(); 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, DefaultFilterProvider>(); yield return describe.Transient(); yield return describe.Transient(); yield return describe.Scoped(); yield return describe.Transient(); yield return describe.Transient(); yield return describe.Transient, DefaultViewComponentInvokerProvider>(); yield return describe.Transient(); yield return describe.Transient(); yield return describe.Singleton(); yield return describe.Singleton(); yield return describe.Singleton(); yield return describe.Describe( typeof(INestedProviderManager<>), typeof(NestedProviderManager<>), implementationInstance: null, lifecycle: LifecycleKind.Transient); yield return describe.Describe( typeof(INestedProviderManagerAsync<>), typeof(NestedProviderManagerAsync<>), implementationInstance: null, lifecycle: LifecycleKind.Transient); yield return describe.Transient(); yield return describe.Describe( typeof(IHtmlHelper<>), typeof(HtmlHelper<>), implementationInstance: null, lifecycle: LifecycleKind.Transient); } } }