AterraEngine.DependencyInjection.Generators
4.13.0
Prefix Reserved
dotnet add package AterraEngine.DependencyInjection.Generators --version 4.13.0
NuGet\Install-Package AterraEngine.DependencyInjection.Generators -Version 4.13.0
<PackageReference Include="AterraEngine.DependencyInjection.Generators" Version="4.13.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="AterraEngine.DependencyInjection.Generators" Version="4.13.0" />
<PackageReference Include="AterraEngine.DependencyInjection.Generators"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add AterraEngine.DependencyInjection.Generators --version 4.13.0
#r "nuget: AterraEngine.DependencyInjection.Generators, 4.13.0"
#:package AterraEngine.DependencyInjection.Generators@4.13.0
#addin nuget:?package=AterraEngine.DependencyInjection.Generators&version=4.13.0
#tool nuget:?package=AterraEngine.DependencyInjection.Generators&version=4.13.0
⛓️💥 AterraEngine.DependencyInjection ⛓️💥
AterraEngine.DependencyInjection is a library that provides tools for automizing dependency injection in .NET projects. It includes source generators for automatic registration of services and attributes to facilitate DI.
Features
- Automatic Service Registration: Use source generators to automatically register services in your project.
- Custom Attributes: Define custom attributes to specify the lifetime and other details for your services.
Getting Started
Prerequisites
- .NET 9.0 or later
Installation
You can install AterraEngine.DependencyInjection via NuGet Package Manager:
dotnet add package AterraEngine.DependencyInjection
You can install AterraEngine.DependencyInjection.Generator via NuGet Package Manager:
dotnet add package AterraEngine.DependencyInjection.Generator
Usage
Define Services with Attributes
You can use the provided attributes to define services:
InjectableService: Simple attribute to register a class to the implementation which is inserted as a type generic.public interface IExampleService; [InjectableService<IExampleService>(ServiceLifetime.Singleton)] public class ExampleService : IExampleService { // ... }FactoryCreatedService: Marks the class as a service which creation depends on another injected service.- The factory service must implement
IFactoryService<>
public interface ICreatedService; [FactoryCreatedService<IExampleFactory, ICreatedService>(ServiceLifetime.Transient)] public class CreatedService : ICreatedService; // The above service is something that is created by the Factory service [InjectableService<IExampleFactory>(ServiceLifetime.Singleton)] public class ExampleFactory : IExampleFactory { public ICreatedService Create() => new CreatedService(); } public interface IExampleFactory : IFactoryService<ICreatedService>;- The factory service must implement
PooledInjectableService: Marks the class as a poolable service. This library creates a classAutoPoolableServiceunder which the class will be registered.- It uses
PooledInjectableServiceObjectPolicyto create a policy. - The poolable service must implement
PooledInjectableServiceObjectPolicy
public interface IExamplePooled : IManualPoolable; [PooledInjectableService<IExamplePooled, ExamplePooled>] public class ExamplePooled : IExamplePooled { public bool Reset() => true; }- It uses
Generate Service Registrations
The source generator will automatically create the necessary registration code. C
all the generated registration method in your Startup or Program class:
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection();
services.RegisterServicesFromYourAssemblyName();
Contributing
Contributions are welcome! Please fork this repository and submit a pull request.
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
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 |
|---|---|---|
| 4.13.0 | 215 | 3/19/2025 |
| 4.12.0 | 136 | 2/25/2025 |
| 4.11.0 | 145 | 2/25/2025 |
| 4.10.0 | 141 | 2/24/2025 |
| 4.9.1 | 137 | 2/24/2025 |
| 4.9.0 | 142 | 2/24/2025 |
| 4.8.2 | 131 | 2/21/2025 |
| 4.8.1 | 162 | 2/19/2025 |
| 4.8.0 | 145 | 2/8/2025 |
| 4.7.0 | 143 | 2/8/2025 |
| 4.6.0 | 153 | 2/8/2025 |
| 4.5.1 | 146 | 2/8/2025 |
| 4.5.0 | 145 | 2/8/2025 |
| 4.4.0 | 139 | 2/7/2025 |
| 4.3.0 | 131 | 2/6/2025 |
| 4.2.0 | 136 | 2/6/2025 |
| 4.1.0 | 141 | 2/5/2025 |
| 4.0.0 | 146 | 2/5/2025 |
| 3.0.1 | 139 | 2/5/2025 |
| 3.0.0 | 148 | 2/5/2025 |
| 2.1.1 | 147 | 2/4/2025 |
| 2.1.0 | 168 | 2/4/2025 |
| 2.0.1 | 129 | 1/29/2025 |
| 2.0.0-preview.6 | 76 | 1/27/2025 |
| 1.3.4 | 175 | 1/1/2025 |
| 1.3.3 | 153 | 1/1/2025 |
| 1.3.0 | 199 | 12/3/2024 |
| 1.2.0 | 135 | 12/2/2024 |
| 1.1.0 | 140 | 11/27/2024 |
| 1.0.0 | 126 | 11/27/2024 |