【发布时间】:2017-08-14 05:24:49
【问题描述】:
在 Asp.Net MVC Core(早期版本,版本 1.0 或 1.1)中,依赖注入绑定在 Startup.cs 类中配置如下:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IMyService, MyService>();
// ...
}
}
在我的应用程序中,我通常有一个基 Startup 类,其中泛型绑定被定义为这些行的序列:
public abstract class BaseStartup
{
public virtual void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IMyService1, MyService1>();
services.AddScoped<IMyService2, MyService2>();
}
}
然后在我的应用程序中,我继承启动类,并注入其他服务:
public class Startup : BaseStartup
{
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
services.AddScoped<IMyService3, MyService3>();
services.AddScoped<IMyService4, MyService4>();
}
}
我现在想知道:我怎样才能“覆盖”以前的绑定? 例如,我想删除或修改基类中定义的绑定,例如:
services.Remove<IMyService1>(); // Doesn't exist
services.AddScoped<IMyService1, MyBetterService1>();
或者只是更新绑定:
services.AddScoped<IMyService1, MyBetterService1>(replacePreviousBinding: true); // Doesn't exist either !
有没有办法做到这一点?或者简单地声明一个与先前定义的绑定具有相同接口的新绑定将覆盖该绑定?
【问题讨论】:
标签: c# asp.net-mvc dependency-injection asp.net-core-mvc