Карточка Middle ASP.NET Core обновлено
Keyed services в .NET 8
Вопрос
Как зарегистрировать две реализации одного интерфейса и выбрать нужную?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
В .NET 8 появились keyed services: builder.Services.AddKeyedSingleton<INotifier, SmsNotifier("sms"); builder.Services.AddKeyedSingleton<INotifier, EmailNotifier("email"); Внедрение: public Handler([FromKeyedServices("sms")] INotifier n).
Ответ
В .NET 8 появились keyed services:
builder.Services.AddKeyedSingleton<INotifier, SmsNotifier>("sms");
builder.Services.AddKeyedSingleton<INotifier, EmailNotifier>("email");
Внедрение: public Handler([FromKeyedServices("sms")] INotifier n).
Разбор
Раньше для этого писали фабрики или внедряли IEnumerable<INotifier> и выбирали по признаку.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.