С помощью шаблона параметров ASP.NET Core можно создать службу и зарегистрировать ее с помощью двух отдельных вызовов.
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<MyService>();
services.Configure<MyServiceOptions>(o => o.Param = 1);
services.AddMvc();
};
Однако мне совершенно неясно, как и можно ли создать два экземпляра службы и связать с ними разные опции? т.е. с учетом двух специализаций некоторого базового класса, как мы можем разделить один класс опций между ними?
public class MyService {}
public class MyService1 : MyService {}
public class MyService2 : MyService2 {}
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<MyService1>();
services.AddTransient<MyService2>();
// What goes here?
// config for instance 1
//services.Configure<MyServiceOptions>(o => o.Param = 1);
// config for instance 2
//services.Configure<MyServiceOptions>(o => o.Param = 2);
services.AddMvc();
};
По сути, я хочу что-то вроде метода расширения IServiceCollection.AddDbContext, но для сервисов, и я посмотрел на методы расширения EF Core, и я их вообще не получаю.