c# – Retornar uma instância inserida pelo DI do .net core em outras classes fora do construtor


Bom dia!

Gostaria de saber se há a possibilidade de retornar uma instância inserida pelo IServiceCollection do DI no .net core em qualquer outro local do sistema.

Por exemplo:

Em meu Startup.cs, inicio uma classe padrão de comunicação com o banco de dados (classe abaixo – os dados de conexão foram suprimidos):

 public class MongoConnector
  {
    private readonly IMongoDatabase mongoDatabase;

    public MongoConnector()
    {
      mongoDatabase = new MongoClient("").GetDatabase("");  
    }

    public IMongoDatabase getDatabase(){
      return mongoDatabase;
    }
  }

Startup.cs

  public class Startup
  {
    public Startup(IConfiguration configuration)
    {
      Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {      
      services.AddSingleton<MongoConnector>();
    }
  }

Após isto, estou construindo alguns factories que deverão receber esta mesma instância já inicializada no Startup.cs. Em algumas funcões deste factory, eu necessito do MongoConnector, como abaixo, para realizar as minhas regras:

    public string getSourceByToken() {
      // BUSCAR AQUI O MONGO CONECTOR DE ALGUM FORMA
      var database = MongoConnector.getDatabase();
    }

Não posso utilizar pelo construtor pois o factory que possui o evento acima será inicializado através de outra classe do sistema, e que não também não possuir relação com o DI. Sem falar que não gostaria de inicializar TODAS as classes do sistema no DI do Startup, e muito menos ficar passando parâmetros desde o Controller.

Alguém poderia me ajudar?

Obrigado!