public static void AddControllersAsServices(IServiceCollection services, IEnumerable <Type> types) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (types == null) { throw new ArgumentNullException(nameof(types)); } StaticControllerTypeProvider controllerTypeProvider = null; controllerTypeProvider = services .Where(s => s.ServiceType == typeof(IControllerTypeProvider)) .Select(s => s.ImplementationInstance) .OfType <StaticControllerTypeProvider>() .FirstOrDefault() ?? new StaticControllerTypeProvider(); foreach (var type in types) { services.TryAddTransient(type, type); controllerTypeProvider.ControllerTypes.Add(type.GetTypeInfo()); } services.Replace(ServiceDescriptor.Transient <IControllerActivator, ServiceBasedControllerActivator>()); services.Replace(ServiceDescriptor.Singleton <IControllerTypeProvider>(controllerTypeProvider)); }
public static void AddControllersAsServices(IServiceCollection services, IEnumerable <Type> types) { var controllerTypeProvider = new StaticControllerTypeProvider(); foreach (var type in types) { services.TryAddTransient(type, type); controllerTypeProvider.ControllerTypes.Add(type.GetTypeInfo()); } services.Replace(ServiceDescriptor.Transient <IControllerActivator, ServiceBasedControllerActivator>()); services.Replace(ServiceDescriptor.Instance <IControllerTypeProvider>(controllerTypeProvider)); }
private ControllerActionDescriptorProvider GetActionDescriptorProvider() { var controllerTypes = typeof(DefaultActionSelectorTests) .GetNestedTypes(BindingFlags.NonPublic) .Select(t => t.GetTypeInfo()) .ToList(); var options = new TestOptionsManager <MvcOptions>(); var controllerTypeProvider = new StaticControllerTypeProvider(controllerTypes); var modelProvider = new DefaultApplicationModelProvider(options); var provider = new ControllerActionDescriptorProvider( controllerTypeProvider, new[] { modelProvider }, options); return(provider); }