Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

254
Vistas
Eliminar un servicio en ASP.Net Core Dependency Injection

En un Asp.Net MVC Core (versiones anteriores, versiones 1.0 o 1.1), los enlaces de inyección de dependencia se configuran de la siguiente manera en la clase Startup.cs:

 public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddScoped<IMyService, MyService>(); // ... } }

En mis aplicaciones, generalmente tengo una clase de inicio base, donde los enlaces genéricos se definen como una secuencia de estas líneas:

 public abstract class BaseStartup { public virtual void ConfigureServices(IServiceCollection services) { services.AddScoped<IMyService1, MyService1>(); services.AddScoped<IMyService2, MyService2>(); } }

Luego, en mi aplicación, heredo la clase de inicio e inyecto otros servicios también:

 public class Startup : BaseStartup { public override void ConfigureServices(IServiceCollection services) { base.ConfigureServices(services); services.AddScoped<IMyService3, MyService3>(); services.AddScoped<IMyService4, MyService4>(); } }

Ahora me pregunto: ¿cómo puedo 'anular' un enlace anterior? Me gustaría, por ejemplo, eliminar o modificar un enlace definido en la clase base, como:

 services.Remove<IMyService1>(); // Doesn't exist services.AddScoped<IMyService1, MyBetterService1>();

O simplemente actualice el enlace:

 services.AddScoped<IMyService1, MyBetterService1>(replacePreviousBinding: true); // Doesn't exist either !

Hay una manera de hacer eso ? ¿O tal vez simplemente declarar un nuevo enlace con la misma interfaz que un enlace definido previamente anulará ese enlace?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede usar la API de recopilación normal para eliminar sus servicios:

 services.AddScoped<IService>(); var serviceDescriptor = services.FirstOrDefault(descriptor => descriptor.ServiceType == typeof(IService)); services.Remove(serviceDescriptor);

También puede crear métodos de extensión para lograr lo mismo:

 public static class ServiceCollectionExtensions { public static IServiceCollection Remove<T>(this IServiceCollection services) { if (services.IsReadOnly) { throw new ReadOnlyException($"{nameof(services)} is read only"); } var serviceDescriptor = services.FirstOrDefault(descriptor => descriptor.ServiceType == typeof(T)); if (serviceDescriptor != null) services.Remove(serviceDescriptor); return services; } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda