автоматически вводить службы net core

Я делаю проект в ядре.net

и всегда добавляя интерфейсы и службы, реализуют эти интерфейсы

public interface IDBContainer{
...
}

public class DBContainer : IDBContainer{
...
}

и я ввожу их в стартап

public void ConfigureServices(IServiceCollection services)
{
        services.AddTransient<IDBContainer, DBContainer>();
}

или используя метод расширения, добавив их

public static IServiceCollection AddInfrastructure(this IServiceCollection services)
{
       services.AddTransient<IDBContainer, DBContainer>();
       return services;
}

и в стартапе

[..]
services.AddInfrastructure();

но это проблема, я должен вводить каждый из них сам как интерфейс и сервис

в методе расширения или в классе запуска

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

и нет проблем с использованием другой библиотеки, если она может делать это как AutoFac или что-то в этом роде

2 ответа

Решение

Вы пробовали https://github.com/khellang/Scrutor? Насколько я знаю, AutoFac также можно использовать с некоторой дополнительной работой, описанной здесь https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html

Хотя я лично предпочитаю ЯВНЫЕ регистрации IoC.

Вот библиотека "автосканирования".

NetCore.AutoRegisterDi

https://www.nuget.org/packages/NetCore.AutoRegisterDi/

https://www.thereformedprogrammer.net/asp-net-core-fast-and-automatic-dependency-injection-setup/

Как работает NetCore.AutoRegisterDi Библиотека NetCore.AutoRegisterDi очень проста - она ​​сканирует сборку или коллекцию сборок, чтобы найти классы, которые: а) являются простыми классами (не универсальными, не абстрактными, не вложенными), которые имеют интерфейсы и б) иметь интерфейс (ы). Затем он зарегистрирует каждый класс с его интерфейсами у поставщика DI NET Core.

Другие вопросы по тегам