Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }