CodeOfChaos.Extensions.DependencyInjection.Generators
0.74.0
Prefix Reserved
See the version list below for details.
dotnet add package CodeOfChaos.Extensions.DependencyInjection.Generators --version 0.74.0
NuGet\Install-Package CodeOfChaos.Extensions.DependencyInjection.Generators -Version 0.74.0
<PackageReference Include="CodeOfChaos.Extensions.DependencyInjection.Generators" Version="0.74.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="CodeOfChaos.Extensions.DependencyInjection.Generators" Version="0.74.0" />
<PackageReference Include="CodeOfChaos.Extensions.DependencyInjection.Generators"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add CodeOfChaos.Extensions.DependencyInjection.Generators --version 0.74.0
#r "nuget: CodeOfChaos.Extensions.DependencyInjection.Generators, 0.74.0"
#:package CodeOfChaos.Extensions.DependencyInjection.Generators@0.74.0
#addin nuget:?package=CodeOfChaos.Extensions.DependencyInjection.Generators&version=0.74.0
#tool nuget:?package=CodeOfChaos.Extensions.DependencyInjection.Generators&version=0.74.0
⛓️💥 CodeOfChaos.Extensions.DependencyInjection ⛓️💥
CodeOfChaos.Extensions.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 CodeOfChaos.Extensions.DependencyInjection via NuGet Package Manager:
dotnet add package CodeOfChaos.Extensions.DependencyInjection
You can install CodeOfChaos.Extensions.DependencyInjection.Generator via NuGet Package Manager:
dotnet add package CodeOfChaos.Extensions.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.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.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 |
|---|---|---|
| 0.83.2 | 196 | 10/22/2025 |
| 0.83.1 | 195 | 9/12/2025 |
| 0.81.1 | 171 | 9/5/2025 |
| 0.81.0 | 198 | 9/3/2025 |
| 0.80.0 | 125 | 8/23/2025 |
| 0.79.1 | 177 | 8/19/2025 |
| 0.79.0 | 163 | 8/19/2025 |
| 0.77.3 | 121 | 8/15/2025 |
| 0.75.0 | 121 | 8/15/2025 |
| 0.74.0 | 166 | 8/13/2025 |
| 0.73.0 | 172 | 8/13/2025 |
| 0.72.0 | 165 | 8/13/2025 |
| 0.71.0 | 168 | 8/13/2025 |
| 0.70.1 | 359 | 7/20/2025 |
| 0.70.0 | 349 | 7/20/2025 |
| 0.69.0 | 99 | 7/5/2025 |
| 0.68.0 | 324 | 5/19/2025 |
| 0.67.0 | 179 | 5/19/2025 |
| 0.66.1 | 142 | 5/9/2025 |
| 0.66.0 | 177 | 5/5/2025 |
| 0.65.0 | 197 | 4/30/2025 |
| 0.64.0 | 213 | 4/23/2025 |
| 0.63.0 | 211 | 4/23/2025 |
| 0.62.0 | 198 | 4/23/2025 |
| 0.61.0 | 194 | 4/23/2025 |
| 0.60.0 | 199 | 4/18/2025 |
| 0.59.1 | 186 | 4/18/2025 |
| 0.59.0 | 249 | 4/17/2025 |
| 0.58.0 | 224 | 4/17/2025 |
| 0.57.0 | 150 | 4/5/2025 |
| 0.56.0 | 117 | 3/29/2025 |
| 0.55.0 | 179 | 3/26/2025 |
| 0.54.0 | 490 | 3/26/2025 |
| 0.53.0 | 473 | 3/24/2025 |
| 0.52.0 | 442 | 3/24/2025 |
| 0.51.0 | 193 | 3/22/2025 |
| 0.50.0 | 178 | 3/20/2025 |
| 0.49.0 | 179 | 3/20/2025 |
| 0.48.0 | 180 | 3/18/2025 |
| 0.47.0 | 197 | 3/18/2025 |
| 0.46.0 | 175 | 3/18/2025 |
| 0.45.0 | 193 | 3/18/2025 |
| 0.44.0 | 171 | 3/17/2025 |
| 0.43.0 | 145 | 3/14/2025 |
| 0.42.3 | 245 | 3/4/2025 |
| 0.42.3-preview.1 | 196 | 3/4/2025 |
| 0.41.2 | 246 | 3/4/2025 |
| 0.41.1 | 221 | 3/3/2025 |
| 0.41.0 | 143 | 2/26/2025 |
| 0.40.1 | 130 | 2/24/2025 |
| 0.40.0 | 125 | 2/24/2025 |
| 0.39.4 | 155 | 2/20/2025 |
| 0.39.3 | 138 | 2/20/2025 |
| 0.39.2 | 142 | 2/20/2025 |
| 0.39.1 | 140 | 2/20/2025 |
| 0.39.0 | 150 | 2/18/2025 |
| 0.37.2 | 131 | 2/16/2025 |
| 0.37.1 | 154 | 2/16/2025 |
| 0.36.4 | 158 | 2/14/2025 |
| 0.36.0 | 145 | 2/14/2025 |
| 0.35.0 | 156 | 2/8/2025 |
| 0.34.0 | 132 | 2/5/2025 |
| 0.33.0 | 163 | 2/5/2025 |
| 0.32.0 | 147 | 2/1/2025 |
| 0.31.0 | 132 | 1/29/2025 |
| 0.30.0 | 108 | 1/8/2025 |