AutoInjectGenerator 2026.7.8.1
dotnet add package AutoInjectGenerator --version 2026.7.8.1
NuGet\Install-Package AutoInjectGenerator -Version 2026.7.8.1
<PackageReference Include="AutoInjectGenerator" Version="2026.7.8.1" />
<PackageVersion Include="AutoInjectGenerator" Version="2026.7.8.1" />
<PackageReference Include="AutoInjectGenerator" />
paket add AutoInjectGenerator --version 2026.7.8.1
#r "nuget: AutoInjectGenerator, 2026.7.8.1"
#:package AutoInjectGenerator@2026.7.8.1
#addin nuget:?package=AutoInjectGenerator&version=2026.7.8.1
#tool nuget:?package=AutoInjectGenerator&version=2026.7.8.1
AutoInjectGenerator
介绍
本项目是一个增量生成器,用于生成自动注入方法
使用
- 实现类添加
AutoInjectAttribute - 新建一个静态分部类,添加
AutoInjectContextAttribute,并提供一个静态分部方法
[AutoInjectContext]
public static partial class AutoInjectContext
{
public static partial void YourMethodName(this IServiceCollection services);
}
- 调用方法
services.YourMethodName();
生成逻辑梳理
每个项目会生成自身模块的注入入口方法,而 AutoInjectContextAttribute 则负责生成统一调用这些方法的汇聚入口。
例如,假设程序入口项目为 Blazor.Test,类库项目为 InjectTest,两个项目会各自生成自己的 InjectModuleServices 方法:
// 各项目分别生成的模块注入方法
public partial class AutoInjectModuleServices
{
[global::System.CodeDom.Compiler.GeneratedCode("AutoInjectGenerator.AutoInjectModuleGenerator", "2026.5.20.1")]
public static void InjectModuleServices(IServiceCollection services, AutoInjectConfiguration config)
{
// 此方法内会完成该模块的具体注入逻辑
}
}
入口程序则会生成调用所有模块注入方法的统一入口:
static partial class AutoInjectContext
{
private static readonly global::System.Collections.Generic.List<string> _includes = ["SERVER"];
private static readonly global::System.Collections.Generic.List<string> _excludes = [];
public static partial void Inject(this Microsoft.Extensions.DependencyInjection.IServiceCollection services)
{
var config = new global::AutoInjectGenerator.AutoInjectConfiguration(_excludes, _includes);
global::Blazor.Test.AutoInjectModuleServices.InjectModuleServices(services, config);
global::InjectTest.AutoInjectModuleServices.InjectModuleServices(services, config);
}
}
相关特性介绍
AutoInjectAttribute
标注实现类,生成服务注入代码
属性
| 名称 | 类型 | 说明 |
|---|---|---|
| LifeTime | InjectLifeTime | 注入周期 |
| ServiceType | Type? | 服务类型,默认为类的第一个接口/自身 |
| Group | string | 分组,默认为空 |
| ServiceKey | object | 服务键,默认为null |
| Factory | string | 指定工厂方法 |
| Instance | string | 指定实例 |
| DeclaredType | Type? | 显式设置Factory或者Instance的所在类型 |
AutoInjectSelfAttribute
等同于AutoInjectAttribute的ServiceType指定为自身
ManualInjectAttribute
在其他类上(一般是标注AutoInjectContextAttribute的类上)配置注入信息
CustomModuleServiceConfigurationAttribute
自己编写额外的服务方法提供给InjectModuleServices调用(详情)
CustomModuleServiceConfigurationAttribute高级用法
自定义的注入方法可以使用IHostApplicationBuilder作为参数。
例如,需要IConfiguration等等, 因此AutoInjectContext处的方法的参数需要提升为IHostApplicationBuilder
InjectLifeTime
可能的值
- Transient
- Scoped(默认值)
- Singleton
AutoInjectContextAttribute
指示生成调用方法
[AutoInjectContext]
internal static partial class AutoInjectContext
{
public static partial void AutoInject(this IServiceCollection builder);
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. 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
-
net10.0
-
net6.0
-
net8.0
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AutoInjectGenerator:
| Package | Downloads |
|---|---|
|
BlazorTemplate.Constraints
BlazorWebAdmin模板项目的组件 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.7.8.1 | 128 | 7/8/2026 |
| 2026.5.22.2 | 103 | 5/22/2026 |
| 2026.5.22.1 | 103 | 5/22/2026 |
| 2026.5.20.1 | 105 | 5/20/2026 |
| 2026.3.2.1 | 125 | 3/2/2026 |
| 0.1.4 | 124 | 2/5/2026 |
| 0.1.4-pre2 | 111 | 1/20/2026 |
| 0.1.4-pre | 115 | 1/20/2026 |
| 0.1.3 | 294 | 11/12/2025 |
| 0.1.2 | 216 | 9/11/2025 |
| 0.1.0 | 270 | 5/22/2025 |
| 0.0.9 | 285 | 10/25/2024 |
| 0.0.8 | 171 | 10/25/2024 |
| 0.0.6 | 167 | 10/24/2024 |
| 0.0.5 | 225 | 10/9/2024 |
| 0.0.4 | 225 | 9/9/2024 |
| 0.0.3 | 213 | 8/15/2024 |