Платформа .NET Core 3.1 предоставила DI - как получить экземпляр уже зарегистрированного типа?
В моем .NET Core 3.1
Startup.cs
, Я пытаюсь получить экземпляр уже зарегистрированного типа, т.е.
IBusinessLogic
с использованием
IServiceCollection
, Но это не работает.
Как получить экземпляр уже зарегистрированного типа в .NET Core 3.1?
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
container.Register<IBusinessLogic, BusinessLogic>();
container.AddSingleton<Func<string, string>>
((username, password) => new JWTCache(userId, password,
container.GetInstance<IBusinessLogic>())); //container.GetInstance<IBusinessLogic>() not working
}
}
1 ответ
Вам нужно использовать перегрузку, которая дает вам
IServiceProvider
:
container.AddSingleton<Func<string, string>>(
sp => (username, password) => new JWTCache(userId, password, sp.GetRequiredService<IBusinessLogic>())
);