BaseController With Dependency Injection – John Daniel Associates, Inc.

Date:


Not too long ago I’ve inherited an ASP.NET core utility, which can also be my first time working with the framework. Working with the applying initializing controllers felt very repetitive since all controllers used a couple of widespread companies like loggers. ASP.NET core makes service entry straightforward with dependency injection, but it surely’s difficult to remain true to the DRY precept when each controller is initialized with the identical few companies. 

ASPNET Services Injected Used In Controllers

Within the code above, a couple of of the companies being injected are additionally being utilized in different controllers. So, it turns into very repetitive to should initialize all controllers the identical method. However transferring the injection of widespread companies to a base controller won’t work, as seen beneath. 

ASPNET Moving Injection Common Services To Base Controller

Having the widespread service injected in a base controller constructor will defeat the aim of a base controller and develop into redundant. The companies nonetheless must be outlined in every youngster controller. 

Answer

Create Properties As a substitute

What I discovered to work greatest for my wants and the applying is to outline all widespread companies as properties. With ASP.NET Core the Microsoft.Extensions.DependencyInjection identify house offers us entry to the next extension technique HttpContext.RequestServices.GetService<T>.

Warning

With this method, one factor to remember is that it makes use of the HttpContext object, and if it’s not obtainable, you will be unable to make use of the service. And bear in mind the companies nonetheless must be registered within the Startup.cs > ConfigureServices technique.

Base Controller

ASPNET Define Common Services Properties

Baby Controller

ASPNET Controllers Inject Services Specific

Now controllers are solely required to inject the companies particular to them. Thus, sticking to the DRY precept and maintaining the controller constructors clear. 

Facet observe, Microsoft appears to choose injection over RequestServices:

The companies obtainable inside an ASP.NET Core request are uncovered by the HttpContext.RequestServices assortment. When companies are requested from within a request, the companies and their dependencies are resolved from the RequestServices assortment.

The framework creates a scope per request and RequestServices exposes the scoped service supplier. All scoped companies are legitimate for so long as the request is energetic.

Be aware: Favor requesting dependencies as constructor parameters to resolving companies from the RequestServices assortment. This ends in courses which can be simpler to check.

Hold Studying: C# Home windows Service Debug Hack >>

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Share post:

Subscribe

spot_imgspot_img

Popular

More like this
Related

Strengthening Your GreenGeeks Account with 2FA and Sensible Practices

Each October, Cyber Safety Consciousness Month serves as...

How Small Companies Clear up Actual-World Issues with Jim Seaside » Succeed As Your Personal Boss

On this episode, Melinda Emerson welcomes Jim Seaside...

The 5 Finest AI Checker Instruments for Writers, Educators, and Entrepreneurs | by Anangsha Alammyan | The Startup | Oct, 2025

Incessantly Requested Questions1. What's an AI authenticity checker?AI...

What’s New at Cover: Fall 2025

The Previous 6 Months Over the previous six months,...