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); }
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); }
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); }); }
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); }
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); }