- Я использую ASP.NET Сердечник
- Мой
IService
зарегистрирован контейнер DI - Есть две реализации:
FooService
иBarService
- Я должен выбрать услугу, основанную на MVC зоне текущего запроса в
Так что мне нужно что-то вроде:Определение ASP.NET MVC сердечника Область при регистрации службы
services.AddScoped<IService>(
c => IsThisTheFooArea
? c.GetRequiredService<FooService>() as IService
: c.GetRequiredService<BarService>() as IService
);
Я не знаю, как реализовать проверку IsThisTheFooArea
.
Как получить доступ к HttpContext
или что-то подобное, чтобы я мог проверить текущий маршрут?
Спасибо, это работает. (... но ничего себе, так много обручей, чтобы перепрыгнуть через что-то настолько простое.) – grokky
Кроме того, я вспоминаю прочтение на странице проекта github, что 'ActionContextAccessor' не зарегистрирован по умолчанию, поскольку это дорого, так что жаль, что нет более простой способ. Он работает, хотя и достаточно хорош для моих нужд. – grokky
Требуется для получения информации о зоне. Я не знаю, есть ли другой способ получить название области. Можно использовать путь запроса (часть области), но в этом случае вам нужно будет ввести «HttpContextAccessor», и я думаю, что это нехорошо. –