asp.net core 2.0 DI Внедрение нескольких классов IInterface в контроллер - PullRequest
1 голос
/ 30 марта 2019

Я собираюсь создать сотни классов. Если они все реализовали один и тот же класс, нужно ли регистрировать их один за другим?

Пример

public class Service<TEntity>: IService<TEntity> {...}

public Interface IService<TEntity> where TEntity : class {...}

public class class1 : Service<apple>, IClass1 {...}

public class class234 : Service<orange>, IClass234 {...}

В моем контроллере я бы хотел добавить его вот так

public class FoodController : Controller{
     private IClass1 _class1;
     private IClass234 _class234;

     FoodController(IClass1 ic1, IClass234 ic234){
          _class1 = ic1;
          _class234 = ic234;
     }
}

Я делал это раньше с Unity в более старых версиях ASP.NET Как я могу сделать это с помощью встроенного DI ASP.NET CORE 2.0?

В контроллере я могу добавить определенный интерфейс IClass1 и IClass234 в конструктор. Это то, чего я пытаюсь достичь, потому что я также хотел бы использовать другие методы из других интерфейсов, которые реализуют классы.

public void ConfigureServices(IServiceCollection services)
{
    // Is there a way to register all 234 classes without typing out services.addTransient...
}

1 Ответ

1 голос
/ 30 марта 2019

В стандартном контейнере DI вы должны зарегистрироваться по одному.

Но вы можете использовать другую библиотеку для автоматической регистрации в соответствии с соглашением об именах:

https://www.google.com/amp/s/andrewlock.net/using-scrutor-to-automatically-register-your-services-with-the-asp-net-core-di-container/amp/

...