Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

252
Views
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?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

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; } }
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!