public IServiceProvider Start(IServiceCollection services)
        {
            var container = new ContainerInitializer().GetContainer();

            container.Populate(services);
            foreach (var task in container.GetAllInstances <IStartupTask>())
            {
                task.Run();
            }


            return(container.GetInstance <IServiceProvider>());
        }
        public IServiceProvider Start(IServiceCollection services)
        {
            // C'è un meccanismo di container che permette di tenere traccia delle interfacce che vogliamo usare e configurarle per dire quale
            // implementazione andare ad usare. In questo caso l'interfaccia IStartupTask, quindi tutte le cose che voglio eseguire quando parte un
            // progetto.
            var container = new ContainerInitializer().GetContainer();

            container.Populate(services);
            // Possiamo notare che c'è un ciclo che chiede a questo oggetto dove vengono registrati tutti gli oggetti che andremo ad utilizzare
            // di darmi gli oggetti che sono IStartupTask così posso eseguirci il Run
            foreach (var task in container.GetAllInstances <IStartupTask>())
            {
                task.Run();
            }
            // Potendoci poi esegire il run questo ci permette di proseguire e di far partire subito il codice

            return(container.GetInstance <IServiceProvider>());
        }