CodeOfChaos.Extensions.DependencyInjection 0.30.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package CodeOfChaos.Extensions.DependencyInjection --version 0.30.0                
NuGet\Install-Package CodeOfChaos.Extensions.DependencyInjection -Version 0.30.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CodeOfChaos.Extensions.DependencyInjection" Version="0.30.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CodeOfChaos.Extensions.DependencyInjection --version 0.30.0                
#r "nuget: CodeOfChaos.Extensions.DependencyInjection, 0.30.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install CodeOfChaos.Extensions.DependencyInjection as a Cake Addin
#addin nuget:?package=CodeOfChaos.Extensions.DependencyInjection&version=0.30.0

// Install CodeOfChaos.Extensions.DependencyInjection as a Cake Tool
#tool nuget:?package=CodeOfChaos.Extensions.DependencyInjection&version=0.30.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>;
    
  • PooledInjectableService : Marks the class as a poolable service. This library creates a class AutoPoolableService under which the class will be registered.

    • It uses PooledInjectableServiceObjectPolicy to create a policy.
    • The poolable service must implement PooledInjectableServiceObjectPolicy
    public interface IExamplePooled : IManualPoolable; 
    
    [PooledInjectableService<IExamplePooled, ExamplePooled>]
    public class ExamplePooled : IExamplePooled {
        public bool Reset() => true;
    }
    
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 Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on CodeOfChaos.Extensions.DependencyInjection:

Package Downloads
CodeOfChaos.Types.UnitOfWork

A small library housing UnitOfWork typings for EntityFrameworkCore

CodeOfChaos.Types.UnitOfWork.Contracts

A small library housing UnitOfWork typings for EntityFrameworkCore

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.34.0 0 2/5/2025
0.33.0 0 2/5/2025
0.32.0 88 2/1/2025
0.31.0 42 1/29/2025
0.30.0 66 1/8/2025
0.2.0 108 10/31/2024
0.1.1 192 7/1/2024
0.1.0 190 6/7/2024