// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddScoped <IDocumentRepository <BaseTask>, DocumentRepository <BaseTask> >((s) => DocumentRepository <BaseTask> .CreateAsync().Result); services.AddScoped <IQueueWriter <BaseTask>, QueueRepository <BaseTask> >((s) => QueueRepository <BaseTask> .CreateAsync().Result); services.AddScoped(typeof(TasksFactory <BaseTask>)); services.AddSingleton <ITaskManager <BaseTask>, TaskManager <BaseTask> >(); services.AddHostedService <TaskManagerService <BaseTask> >(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); }); }