Платформа .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>())
);
Другие вопросы по тегам