AterraEngine.DependencyInjection.Contracts 2.0.1

Prefix Reserved
dotnet add package AterraEngine.DependencyInjection.Contracts --version 2.0.1                
NuGet\Install-Package AterraEngine.DependencyInjection.Contracts -Version 2.0.1                
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="AterraEngine.DependencyInjection.Contracts" Version="2.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AterraEngine.DependencyInjection.Contracts --version 2.0.1                
#r "nuget: AterraEngine.DependencyInjection.Contracts, 2.0.1"                
#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 AterraEngine.DependencyInjection.Contracts as a Cake Addin
#addin nuget:?package=AterraEngine.DependencyInjection.Contracts&version=2.0.1

// Install AterraEngine.DependencyInjection.Contracts as a Cake Tool
#tool nuget:?package=AterraEngine.DependencyInjection.Contracts&version=2.0.1                

⛓️‍💥 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>;
    
  • 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 (1)

Showing the top 1 NuGet packages that depend on AterraEngine.DependencyInjection.Contracts:

Package Downloads
AterraEngine.DependencyInjection

A custom built Dependency Container system for AterraEngine

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.1 1 1/29/2025
2.0.0-preview.6 28 1/27/2025
2.0.0-preview.5 25 1/27/2025