Я вижу во многих примерах MVC, как регистрировать свои интерфейсы в методе ConfigurationServices
класса Startup
. Это нормально, когда у вас есть код, написанный в приложении MVC, но в «реальном мире» это не обязательно будет так.DI in .Net Core MVC 1.0
У меня есть проект библиотеки классов в виде
public class MyService : IMyService
{
private readonly IMyRepository _myRepository;
public MyService(IMyRepository myRepository)
{
_myRepository = myRepository;
}
.......
Теперь в мой контроллер у меня есть конструктор формы:
public HomeController(IConfigurationRoot config, IMyServcie myService)
{
......
Проблема в том, что MyService
интерфейсы не были зарегистрированы с контейнером DI, и я действительно не хочу раздувать метод ConfigurationServices
с нагрузками services.AddScoped<interface,class>()
строк кода для других моих слоев.
Что мне нужно сделать в других моих планах (Репозиторий и Служба), чтобы сначала зарегистрировать их здесь (оба являются проектами библиотеки .NET Core), а затем подключить эти контейнеры в родительский контейнер?
Вы должны зарегистрировать его где-нибудь. Раздува, о котором вы говорите, будет где-то там. – Shyju
Да, я знаю, но я хочу зарегистрировать свои интерфейсы, определенные на моем уровне репозитория в контейнере слоя репозитория.Затем я хочу зарегистрировать свои интерфейсы, определенные на моем уровне обслуживания в контейнере уровня обслуживания, а затем дополнительно присоединить контейнер репозитория в качестве расширения к контейнеру уровня обслуживания и затем, наконец, зарегистрировать контейнер уровня обслуживания в службе конфигурации проекта MVC , Я знал, как это сделать с помощью Unity, но в Core 1.0 и встроенном контейнере Di я не знаю, как это сделать. – bilpor
'ConfigurationServices' - ваш корневой каталог, так что вы регистрируете свои услуги. Раздуваться надо куда-то. Вы можете создать метод расширения в своих других слоях и цели «ServiceCollection», а затем заполнить по мере необходимости. Технически они официально не зарегистрированы. они регистрируются в корне композиции, когда вы применяете метод расширения для 'ServiceColection' – Nkosi