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                
#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                

Dybal.Utils.Extensions.DependencyInjection

这个库为您提供了一个简单直接的方法,通过属性在 dotnet 项目中注册应用程序的所有服务。使用这个库,您可以显著减少 Startup 类的复杂性和冗余,并使服务注册更加整洁且易于理解。

特性

  • 提供用于标记服务的属性。
  • 使用反射自动服务注册。
  • 支持所有服务生命周期: SingletonScopedTransient
  • 支持使用指定接口或自身注册服务。

安装

该库可以通过 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 已计算。
兼容目标框架
包含目标框架(在软件包中)
了解有关目标框架.NET标准的更多信息。

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