<分区>
在 Asp.Net MVC Core(早期版本,版本 1.0 或 1.1)中,依赖注入(inject)绑定(bind)在 Startup.cs 类中配置如下:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IMyService, MyService>();
// ...
}
}
在我的应用程序中,我通常有一个 Startup 基类,其中通用绑定(bind)被定义为这些行的序列:
public abstract class BaseStartup
{
public virtual void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IMyService1, MyService1>();
services.AddScoped<IMyService2, MyService2>();
}
}
然后在我的应用程序中,我继承启动类,并注入(inject)其他服务:
public class Startup : BaseStartup
{
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
services.AddScoped<IMyService3, MyService3>();
services.AddScoped<IMyService4, MyService4>();
}
}
我现在想知道:我怎样才能“覆盖”以前的绑定(bind)? 例如,我想删除或修改基类中定义的绑定(bind),例如:
services.Remove<IMyService1>(); // Doesn't exist
services.AddScoped<IMyService1, MyBetterService1>();
或者简单地更新绑定(bind):
services.AddScoped<IMyService1, MyBetterService1>(replacePreviousBinding: true); // Doesn't exist either !
有办法吗?或者简单地声明一个与先前定义的绑定(bind)具有相同接口(interface)的新绑定(bind)将覆盖该绑定(bind)?