Мне никогда не приходилось использовать IUserIdProvider
, но я не вижу ничего, что конкретно требует, чтобы было единичным.Возможно, я что-то пропустил, хотя.Тем не менее, я думаю, что вы, по крайней мере, должны попытаться зарегистрировать его как ограниченный до того, как приехать сюда (надеюсь).
Если предположить, что он должен быть одноэлементным, тогда единственным вариантом является шаблон службы-локатора.Вместо инъекции IBusinessDependencies
вместо IServiceProvider
.Тогда всякий раз, когда вам действительно нужен ваш экземпляр IBusinessDependencies
, делайте:
using (var scope = _serviceProvider.CreateScope())
{
var dependencies = scope.ServiceProvider.GetRequiredService<IBusinessDependencies>();
// do something with dependencies
}
В случае, если это не очевидно, вы не можете сохранить свой экземпляр IBusinessDependencies
на иваре или чем-то еще.Вам нужно будет извлекать его из коллекции сервисов каждый раз, когда вам нужно его использовать.