Dybal.Utils.Extensions.DependencyInjection 1.0.0
dotnet add package Dybal.Utils.Extensions.DependencyInjection --version 1.0.0
NuGet\Install-Package Dybal.Utils.Extensions.DependencyInjection -Version 1.0.0
该命令旨在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Dybal.Utils.Extensions.DependencyInjection" Version="1.0.0" />
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add Dybal.Utils.Extensions.DependencyInjection --version 1.0.0
NuGet 团队不提供对此客户端的支持。请 contact its 其维护者 以获取支持。
#r "nuget: Dybal.Utils.Extensions.DependencyInjection, 1.0.0"
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此内容复制到交互式工具或脚本的源代码中以引用包。
// Install Dybal.Utils.Extensions.DependencyInjection as a Cake Addin #addin nuget:?package=Dybal.Utils.Extensions.DependencyInjection&version=1.0.0 // Install Dybal.Utils.Extensions.DependencyInjection as a Cake Tool #tool nuget:?package=Dybal.Utils.Extensions.DependencyInjection&version=1.0.0
NuGet 团队不提供对此客户端的支持。请 contact its 其维护者 以获取支持。
Dybal.Utils.Extensions.DependencyInjection
这个库为您提供了一个简单直接的方法,通过属性在 dotnet 项目中注册应用程序的所有服务。使用这个库,您可以显著减少 Startup
类的复杂性和冗余,并使服务注册更加整洁且易于理解。
特性
- 提供用于标记服务的属性。
- 使用反射自动服务注册。
- 支持所有服务生命周期:
Singleton
、Scoped
和Transient
。 - 支持使用指定接口或自身注册服务。
安装
该库可以通过 NuGet 安装。
dotnet add package Dybal.Utils.Extensions.DependencyInjection
使用
首先,您需要在与 Startup
类的 ConfigureServices
方法中调用扩展方法 AddMarkedServicesInAssembly
。
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddMarkedServicesInAssembly(Assembly.GetExecutingAssembly());
// ...
}
此方法将扫描程序集,为带有任何注册属性的字类添加到 DI 容器中,并指定其生命周期。
从多个程序集中添加服务
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddMarkedServicesFromAllAssemblies();
// or
services.AddMarkedServicesFromAllAssemblies("MyProject.");
// ...
}
此方法通过提供的 assemblyNamePrefix
参数对所有加载的程序集进行循环,并注册带有注册属性的所有服务。如果未提供参数,将扫描所有程序集。
使用具体类型注册服务
[RegisterService(ServiceLifetime.Scoped)]
public class SomeScopedService
{
// Implementation goes here...
}
使用 RegisterService
属性,服务将被与其具体类型注册。
使用特定接口注册服务
[RegisterService<IScopedService>(ServiceLifetime.Scoped)]
public class SomeScopedService : IScopedService
{
// Implementation goes here...
}
RegisterService
属性也可以用于使用特定接口注册服务。
特定生命周期的快捷属性
[RegisterSingletonService]
public class SomeSingletonService
{
// Implementation goes here...
}
[RegisterTransientService]
public class SomeTransientService
{
// Implementation goes here...
}
[RegisterScopedService]
public class SomeScopedService
{
// Implementation goes here...
}
这些属性以各自的生命周期注册服务。它们也可以与接口一起使用。
产品 | 版本 兼容和附加计算的目标框架版本。 |
---|---|
.NET | net7.0 兼容。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
-
net7.0
- Microsoft.CodeAnalysis.CSharp (≥ 4.6.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (≥ 7.0.0)
NuGet软件包
此包未由任何NuGet软件包使用。
GitHub仓库
此包未由任何流行的GitHub仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
1.0.0 | 296 | 11/15/2023 |
1.0.0-pre-07 | 343 | 7/12/2023 |
1.0.0-pre-06 | 109 | 7/5/2023 |