Tolitech.DependencyInjection.Generators
1.0.0-preview.3
See the version list below for details.
dotnet add package Tolitech.DependencyInjection.Generators --version 1.0.0-preview.3
NuGet\Install-Package Tolitech.DependencyInjection.Generators -Version 1.0.0-preview.3
<PackageReference Include="Tolitech.DependencyInjection.Generators" Version="1.0.0-preview.3" />
<PackageVersion Include="Tolitech.DependencyInjection.Generators" Version="1.0.0-preview.3" />
<PackageReference Include="Tolitech.DependencyInjection.Generators" />
paket add Tolitech.DependencyInjection.Generators --version 1.0.0-preview.3
#r "nuget: Tolitech.DependencyInjection.Generators, 1.0.0-preview.3"
#:package Tolitech.DependencyInjection.Generators@1.0.0-preview.3
#addin nuget:?package=Tolitech.DependencyInjection.Generators&version=1.0.0-preview.3&prerelease
#tool nuget:?package=Tolitech.DependencyInjection.Generators&version=1.0.0-preview.3&prerelease
Tolitech.DependencyInjection.Generators
Overview
Tolitech.DependencyInjection.Generators is a C# source generator that automates the registration of services in the dependency injection container. It scans for interfaces annotated with the [ServiceRegistration]
attribute and generates code to register their implementations with the specified lifetime (Singleton, Scoped, Transient).
Features
- Automatic registration of services based on interface attributes
- Supports Singleton, Scoped, and Transient lifetimes
- Generates extension method
AddGeneratedServices
forIServiceCollection
- Reduces boilerplate and manual DI configuration
Getting Started
Installation
To use the library, download the package via NuGet:
dotnet add package Tolitech.DependencyInjection.Generators
1. Annotate Interfaces
Use the ServiceRegistrationAttribute
to annotate your interfaces:
using Tolitech.DependencyInjection.Generators.Abstractions;
using Microsoft.Extensions.DependencyInjection;
[ServiceRegistration(ServiceLifetime.Transient)]
public interface IService {}
[ServiceRegistration(ServiceLifetime.Scoped)]
public interface IRepository {}
2. Implement Interfaces
Create concrete classes implementing your annotated interfaces:
public class Service : IService {}
public class Repository : IRepository {}
3. Register Services
Call the generated extension method in your DI setup:
var services = new ServiceCollection();
services.AddGeneratedServices();
All implementations will be registered with the correct lifetimes.
Example
[ServiceRegistration(ServiceLifetime.Singleton)]
public interface IMyService {}
public class MyService : IMyService {}
// Registration
services.AddGeneratedServices();
How It Works
- The generator scans for interfaces with
[ServiceRegistration]
. - It finds all implementations and registers them in DI.
- The generated code is added as an extension method to
IServiceCollection
.
Requirements
- .NET Standard 2.0+
- Microsoft.CodeAnalysis.CSharp
Project Structure
Generator.cs
: Source generator logicServiceInfo.cs
: Internal model for service registration
See Also
- Tolitech.DependencyInjection.Generators.Abstractions
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
- Tolitech.DependencyInjection.Generators.Abstractions (>= 1.0.0-preview.1)
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-preview.6 | 92 | 7/28/2025 |
1.0.0-preview.5 | 84 | 7/28/2025 |
1.0.0-preview.4 | 88 | 7/28/2025 |
1.0.0-preview.3 | 88 | 7/28/2025 |
1.0.0-preview.2 | 87 | 7/27/2025 |
1.0.0-preview.1 | 124 | 7/26/2025 |