首先,假设您有配置参数,并根据您的配置参数决定哪个服务将由您的接口解析
services.AddScoped<ISomethingElseService, SomethingService>();
if (Configuration["MyServiceParam"] == "X")
services.AddScoped<ISomethingService, SomethingElseService>();
另一个选择是
services.AddScoped<ISomethingService>(s => {
var MyServiceA = s.GetService<MyServiceA>();
if (MyServiceA is null)
return new SomethingElseService();
else
return new SomethingService(MyServiceA);
});