HLCores.Configurations.DI
1.0.0
dotnet add package HLCores.Configurations.DI --version 1.0.0
NuGet\Install-Package HLCores.Configurations.DI -Version 1.0.0
<PackageReference Include="HLCores.Configurations.DI" Version="1.0.0" />
paket add HLCores.Configurations.DI --version 1.0.0
#r "nuget: HLCores.Configurations.DI, 1.0.0"
// Install HLCores.Configurations.DI as a Cake Addin #addin nuget:?package=HLCores.Configurations.DI&version=1.0.0 // Install HLCores.Configurations.DI as a Cake Tool #tool nuget:?package=HLCores.Configurations.DI&version=1.0.0
HLCores.Configurations.DI
HLCores.Configurations.DI is DependencyInjection using ServiceLifetime by attribute.
Why is DependencyInjectionConfiguration ?
In the below example, the IServiceA interface defines a Call method:
public interface IServiceA
{
void Do(string name);
}
This interface is implemented by ServiceA:
public class ServiceA : IServiceA
{
void Do(string name)
{
// implementation
}
}
The example app registers the IServiceA with ServiceA by AddScoped method:
using DependencyInjectionConfigurationExample.Interfaces;
using DependencyInjectionConfigurationExample.Services;
var builder = WebApplication.CreateBuilder(args);
...
builder.Services.AddScoped<IServiceA, ServiceA>();
...
var app = builder.Build();
The IServiceA service is requested and used to call the Call method:
public class TestController : ControllerBase
{
private readonly IServiceA _serviceA;
public TestController(IServiceA serviceA)
{
_serviceA = serviceA;
}
public void OnRequest()
{
_serviceA.Do("SD3team");
}
}
If you forget to register any nessessory service into DI engine or not defined before using, there are some annoying error can be happened:
System.InvalidOperationException: Unable to resolve service for type ...
at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, ...
With DependencyInjectionConfiguration, above problem can be solved.
First of all, you need to create IServiceA service with DependencyInjection attribute and specify that the service will be created every time it is requested (Transient) :
[DependencyInjectionAttribute(ServiceLifetime.Transient)]
public interface IServiceA
{
void Do();
}
Finally, register the DependencyInjection by adding this line into Program.cs:
builder.Services.AddDependencyInjectionConfiguration(typeof(Program));
And now, all of your services that attributed with DependencyInjection will be automatically registered in the dotnet core DI engine. When you create a new service with DependencyInjection attribute, you do not need to add any new code line into DI engine for the new service register.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- Microsoft.EntityFrameworkCore (>= 7.0.20)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 124 | 8/16/2024 |