コード例 #1
0
        public static IEndpointConventionBuilder MapRazorPages(
            this IEndpointRouteBuilder routeBuilder,
            string basePath = null)
        {
            var mvcEndpointDataSource = routeBuilder.DataSources.OfType <MvcEndpointDataSource>().FirstOrDefault();

            if (mvcEndpointDataSource == null)
            {
                mvcEndpointDataSource = routeBuilder.ServiceProvider.GetRequiredService <MvcEndpointDataSource>();
                routeBuilder.DataSources.Add(mvcEndpointDataSource);
            }

            var conventionBuilder = new DefaultEndpointConventionBuilder();

            mvcEndpointDataSource.AttributeRoutingConventionResolvers.Add(actionDescriptor =>
            {
                if (actionDescriptor is PageActionDescriptor pageActionDescriptor)
                {
                    // TODO: Filter pages by path
                    return(conventionBuilder);
                }

                return(null);
            });

            return(conventionBuilder);
        }
コード例 #2
0
        public static IEndpointConventionBuilder MapMvcControllers <TController>(
            this IEndpointRouteBuilder routeBuilder) where TController : ControllerBase
        {
            var mvcEndpointDataSource = routeBuilder.DataSources.OfType <MvcEndpointDataSource>().FirstOrDefault();

            if (mvcEndpointDataSource == null)
            {
                mvcEndpointDataSource = routeBuilder.ServiceProvider.GetRequiredService <MvcEndpointDataSource>();
                routeBuilder.DataSources.Add(mvcEndpointDataSource);
            }

            var conventionBuilder = new DefaultEndpointConventionBuilder();

            mvcEndpointDataSource.AttributeRoutingConventionResolvers.Add(actionDescriptor =>
            {
                if (actionDescriptor is ControllerActionDescriptor controllerActionDescriptor &&
                    typeof(TController).IsAssignableFrom(controllerActionDescriptor.ControllerTypeInfo))
                {
                    return(conventionBuilder);
                }

                return(null);
            });

            return(conventionBuilder);
        }
        private TestEndpointConventionBuilder CreateBuilder()
        {
            var conventionBuilder = new DefaultEndpointConventionBuilder(new RouteEndpointBuilder(
                                                                             TestConstants.EmptyRequestDelegate,
                                                                             RoutePatternFactory.Parse("/test"),
                                                                             order: 0));

            return(new TestEndpointConventionBuilder(conventionBuilder));
        }
コード例 #4
0
        private static IEndpointConventionBuilder MapActionDescriptors(
            this IEndpointRouteBuilder routeBuilder,
            Type containingType)
        {
            var mvcEndpointDataSource = routeBuilder.DataSources.OfType <MvcEndpointDataSource>().FirstOrDefault();

            if (mvcEndpointDataSource == null)
            {
                mvcEndpointDataSource = routeBuilder.ServiceProvider.GetRequiredService <MvcEndpointDataSource>();
                routeBuilder.DataSources.Add(mvcEndpointDataSource);
            }

            var conventionBuilder = new DefaultEndpointConventionBuilder();

            var assemblyFilter = containingType?.Assembly;

            mvcEndpointDataSource.AttributeRoutingConventionResolvers.Add(actionDescriptor =>
            {
                // Filter a descriptor by the assembly
                // Note that this will only filter actions on controllers
                // Does not support filtering Razor pages embedded in assemblies
                if (assemblyFilter != null)
                {
                    if (actionDescriptor is ControllerActionDescriptor controllerActionDescriptor)
                    {
                        if (controllerActionDescriptor.ControllerTypeInfo.Assembly != assemblyFilter)
                        {
                            return(null);
                        }
                    }
                }

                return(conventionBuilder);
            });

            return(conventionBuilder);
        }
 public TestEndpointConventionBuilder(DefaultEndpointConventionBuilder endpointConventionBuilder)
 {
     _endpointConventionBuilder = endpointConventionBuilder;
 }