public static void UseMvc( this IPipelineBuilder @this, Action <IUseMvcBuilder> configureUseMvcBuilder = null) { var addMvcBuilder = @this.ServiceProvider.GetRequiredService <IAddMvcBuilder>(); var options = addMvcBuilder.MvcOptions; var useMvcBuilder = new UseMvcBuilder(@this.ServiceProvider); useMvcBuilder.Controllers = addMvcBuilder.Controllers; //Controllers settiongs. ControllersMiddlewareExtensions.InitUseMvcBuilder(useMvcBuilder); //Custom settings. //!Warning! Service bus will always return null values before we init MvcMiddleware. configureUseMvcBuilder?.Invoke(useMvcBuilder); var md = new MvcMiddleware(addMvcBuilder.MvcOptions, useMvcBuilder); //Add BotExt validator. if (options.ConfigureBotExtWithMvc) { @this.AddBotExtMvcGlobalValidator( options.BotExtOrder, md.SetGlobalSearchBag ); } @this.UseMiddleware(md); }
public static void AddMvc( this ServiceCollectionWrapper serviceCollectionWrapper, MvcOptions mvcOptions = null, Action <IAddMvcBuilder> configureAddMvcBuilder = null) { var serv = serviceCollectionWrapper.Services; //First step. Register all services, that can be registered before IAddMvcBuilder configurations. AddServises_NotRequiredBuilder(serviceCollectionWrapper); //Second step. Init AddMvcBuilder parameters with MvcOptions to pass it to callback. mvcOptions = mvcOptions ?? new MvcOptions(); var addMvcBuilder = InitAddMvcBuilder(serviceCollectionWrapper, mvcOptions); //Third step. Register all services based on IAddMvcBuilder. AddServises_RequiredBuilder( serviceCollectionWrapper, addMvcBuilder ); //!Add controllers services. ControllersMiddlewareExtensions.AddControllersServices(addMvcBuilder); //Custom configs. configureAddMvcBuilder?.Invoke(addMvcBuilder); //Finish. Register builders to be resolved in middleware. serv.AddSingleton <IAddMvcBuilder>(addMvcBuilder); }
static IAddMvcBuilder InitAddMvcBuilder(ServiceCollectionWrapper serviceCollectionWrapper, MvcOptions mvcOptions) { var serv = serviceCollectionWrapper.Services; IAddMvcBuilder addMvcBuilder = new AddMvcBuilder( mvcOptions, serv ); ControllersMiddlewareExtensions.InitAddMvcBuilder(mvcOptions, addMvcBuilder); return(addMvcBuilder); }