public static IServiceCollection AddDynamicControllers(this IServiceCollection services, IWebHostEnvironment env) { var change = new DynamicActionDescriptorChangeProvider(); services.AddSingleton(change); services.AddSingleton <IActionDescriptorChangeProvider, DynamicActionDescriptorChangeProvider>(r => r.GetRequiredService <DynamicActionDescriptorChangeProvider>()); // FIXME: bad practice var sp = services.BuildServiceProvider(); var mvc = services.AddControllersWithViews(x => { x.Conventions.Add(new DynamicControllerModelConvention()); }); mvc.ConfigureApplicationPartManager(x => { var logger = sp.GetRequiredService <ILogger <DynamicControllerFeatureProvider> >(); var ontology = sp.GetRequiredService <IOntologyLog>(); var provider = new DynamicControllerFeatureProvider(ontology, logger); x.FeatureProviders.Add(provider); }); if (env.IsDevelopment()) { mvc.AddRazorRuntimeCompilation(o => { }); } services.AddRazorPages(); return(services); }
public RebuildControllersWhenSchemaAdded(DynamicActionDescriptorChangeProvider changeProvider) { _changeProvider = changeProvider; }