автоматически вводить службы 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.