¿Cómo eliminar un servicio predeterminado del contenedor .net core IoC?

Una de las cosas hermosas de .net core es que es muy modular y configurable.

Un aspecto clave de esa flexibilidad es que aprovecha una IoC para registrar servicios, a menudo a través de interfaces. En teoría, esto permite reemplazar un servicio .net predeterminado con una implementación personalizada de ese servicio con muy poco esfuerzo.

Todo esto suena increíble en teoría. Pero tengo un caso de trabajo real en el que quiero reemplazar un servicio principal .net predeterminado por el mío y no puedo encontrar la forma de eliminar el servicio predeterminado.

Más específicamente, en Startup.csConfigureServices método, cuandoservices.AddSession() se llama registra unDistributedSessionStore vai siguiente código:

 services.AddTransient<ISessionStore, DistributedSessionStore>();

como se puede ver en el código fuente:https://github.com/aspnet/Session/blob/rel/1.1.0/src/Microsoft.AspNetCore.Session/SessionServiceCollectionExtensions.cs

Me gustaría reemplazar ese ISessionStore con uno de mi propia creación. Entonces si tengo una claseRonsSessionStore:ISessionStore que quiero usar para reemplazar el ISessionStore actualmente registrado, ¿cómo puedo hacerlo?

Sé que puedo registrar mi ISessionStore en Startup.csConfigureServices método a través de lo siguiente:

 services.AddTransient<ISessionStore, RonsSessionStore>();

Pero, ¿cómo puedo eliminar el ya registradoDistributedSessionStore?

Traté de lograr esto en el startup.csConfigureServices método a través de

 services.Remove(ServiceDescriptor.Transient<ISessionStore, DistributedSessionStore>());

pero no tuvo ningún efecto y DistributedSessionStore todavía estaba en el contenedor de IoC. ¿Algunas ideas?

¿Cómo se elimina un servicio de IoC en elConfigureServices método de la startup.cs?

Respuestas a la pregunta(2)

Su respuesta a la pregunta