Hassan Ahmed
Hassan Ahmed

Reputation: 67

automatically inject services net core

I am doing a project in .net core

and always adding Interfaces and Services implement that Interfaces

public interface IDBContainer{
...
}

public class DBContainer : IDBContainer{
...
}

and i inject them in the startup

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

or using extension method adding them

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

and in startup

[..]
services.AddInfrastructure();

but that is the problem i has to inject each one myself as interface and service

in the extension method or in the startup class

is there away to add the interface and implementation for it automatically. and there is another thing the interfaces and class is in another project assembly in the same solution???

and there is no problem to use other library if it can do it like AutoFac or something

Upvotes: 0

Views: 1754

Answers (2)

granadaCoder
granadaCoder

Reputation: 27874

While I personally prefer EXPLICIT IoC registrations.

Here is a "autoscan" library.

NetCore.AutoRegisterDi

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

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

How to NetCore.AutoRegisterDi works The NetCore.AutoRegisterDi library is very simple – it will scan an assembly, or a collection of assemblies to find classes that a) are simple classes (not generic, not abstract, not nested) that have interfaces and b) have an interface(s). It will then register each class with its interfaces with the NET Core DI provider.

Upvotes: 0

jgasiorowski
jgasiorowski

Reputation: 1033

Have you tried https://github.com/khellang/Scrutor ? As far as I know AutoFac can also be used with some extra work documented here https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html

Upvotes: 1

Related Questions