Поддерживает ли ядро .net шаблон локатора службы? Я понимаю возможность внедрения зависимости, и это считается анти-паттерном, но я хочу знать, возможно ли это в ядре .net?
В документации ядра .net, похоже, говорится, что они поддерживаютшаблон локатора службы посредством внедрения IServiceProvider, а затем разрешения службы с этим введенным поставщиком. Проблема в том, что это все еще внедрение зависимостей, и оно работает не во всех случаях.
Другой «взлом», который я пробовал, - это сохранение созданного ServiceProvider (либо в Configure (), либо сборка вConfigureServices ()). Проблема в том, что я сохраняю корневого поставщика в основном глобальную переменную. Поскольку это корневой провайдер, все сервисы с областью видимости обновляются до одиночных, поэтому это неправдоподобное решение.
Вот как это работает в .net framework:
var myService =
(T)GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(T)));