Ejemplo n.º 1
0
        public static IMvcCoreBuilder AddWebApiProxy(this IMvcCoreBuilder mvcBuilder, Action <WebApiProxyOptions> optionAction)
        {
            var option = new WebApiProxyOptions();

            optionAction(option);

            foreach (var o in option.WebApiProxies)
            {
                var interfaceTypes = o.GetType().Assembly.GetTypes()
                                     .Where(x => x.IsInterface && x.GetMethods()
                                            .SelectMany(m => m.GetCustomAttributes(typeof(ApiActionAttribute), true)).Any());

                foreach (var t in interfaceTypes)
                {
                    mvcBuilder.AddMvcOptions(opt =>
                    {
                        opt.Conventions.Add(new ControllerModelConvention(t));
                        opt.Conventions.Add(new ActionModelConvention(t));
                        opt.Conventions.Add(new ParameterModelConvention(t));
                    });
                }

                mvcBuilder.ConfigureApplicationPartManager(manager =>
                {
                    var featureProvider = new ServiceControllerFeatureProvider(interfaceTypes);
                    manager.FeatureProviders.Remove(
                        manager.FeatureProviders.FirstOrDefault(x => x.GetType() == typeof(ControllerFeatureProvider)));
                    manager.FeatureProviders.Add(featureProvider);
                });
                ;
            }

            return(mvcBuilder);
        }
Ejemplo n.º 2
0
        public static IMvcCoreBuilder AddWebApiProxyServer(this IMvcCoreBuilder mvcBuilder, Action <WebApiProxyOptions> optionAction)
        {
            AppDomain.CurrentDomain.UpdateExcutingAssemblies();

            var option = new WebApiProxyOptions();

            optionAction(option);

            foreach (var o in option.WebApiProxies)
            {
                var interfaceTypes = o.GetType().Assembly.GetTypes()
                                     .Where(x => x.IsInterface);

                foreach (var t in interfaceTypes)
                {
                    mvcBuilder.AddMvcOptions(opt =>
                    {
                        opt.Conventions.Add(new ControllerModelConvention(t));
                        opt.Conventions.Add(new ActionModelConvention(t));
                        opt.Conventions.Add(new ParameterModelConvention(t));
                    });
                }

                mvcBuilder.ConfigureApplicationPartManager(manager =>
                {
                    var featureProvider = new ServiceControllerFeatureProvider(interfaceTypes);
                    manager.FeatureProviders.Remove(
                        manager.FeatureProviders.FirstOrDefault(x => x.GetType() == typeof(ControllerFeatureProvider)));
                    manager.FeatureProviders.Add(featureProvider);
                });
                ;
            }

            return(mvcBuilder);
        }
Ejemplo n.º 3
0
        private static void ConfigureInterfaces(this IMvcBuilder mvcBuilder, IEnumerable <Type> serviceTypes)
        {
            foreach (var t in serviceTypes)
            {
                mvcBuilder.AddMvcOptions(opt =>
                {
                    opt.Conventions.Add(new ControllerModelConvention(t));
                    opt.Conventions.Add(new ActionModelConvention(t));
                    opt.Conventions.Add(new ParameterModelConvention(t));
                });
            }

            mvcBuilder.ConfigureApplicationPartManager(manager =>
            {
                var featureProvider = new ServiceControllerFeatureProvider(serviceTypes);

                manager.FeatureProviders.Remove(manager.FeatureProviders.FirstOrDefault(x => x.GetType() == typeof(ControllerFeatureProvider)));
                manager.FeatureProviders.Add(featureProvider);
            });
        }
Ejemplo n.º 4
0
        private static IMvcCoreBuilder ConfigureInterfaces(this IMvcCoreBuilder mvcBuilder, WebApiProxyOptions options)
        {
            foreach (var t in options.RegisteredServices.Select(x => x.Value))
            {
                mvcBuilder.AddMvcOptions(opt =>
                {
                    opt.Conventions.Add(new ControllerModelConvention(t));
                    opt.Conventions.Add(new ActionModelConvention(t));
                    opt.Conventions.Add(new ParameterModelConvention(t));
                });
            }

            mvcBuilder.ConfigureApplicationPartManager(manager =>
            {
                var featureProvider = new ServiceControllerFeatureProvider(options.RegisteredServices.Select(x => x.Value));
                manager.FeatureProviders.Remove(manager.FeatureProviders.FirstOrDefault(x => x.GetType() == typeof(ControllerFeatureProvider)));
                manager.FeatureProviders.Add(featureProvider);
            });

            return(mvcBuilder);
        }
Ejemplo n.º 5
0
        private void AddFeatureMvcControl(IServiceCollection services)
        {
            var defaultMvcControllerManager = new MvcControllerManager();


            new ApiControllerConventional(_extensionManager, new MvcControllerBuilderFactory(new MvcControllerOption(typeof(IAppService)),
                                                                                             defaultMvcControllerManager)).RegisterController();

            services.AddMvcCore(opt =>
            {
                opt.Conventions.Add(new ControllerModelConvention(defaultMvcControllerManager));
                opt.Conventions.Add(new BlocksCore.WebAPI.ActionModelConvention(defaultMvcControllerManager));
                opt.Conventions.Add(new ParameterModelConvention());
            })
            .ConfigureApplicationPartManager(manager =>
            {
                var featureProvider = new ServiceControllerFeatureProvider(defaultMvcControllerManager);
                manager.FeatureProviders.Add(featureProvider);
            }).AddXmlSerializerFormatters()
            .AddXmlDataContractSerializerFormatters();

            services.AddSingleton(defaultMvcControllerManager);
        }