介绍
在ASP.NET Core中,每当我们将服务作为依赖项注入时,都必须将此服务注册到ASP.NET Core依赖项注入容器。但是,一个接一个地注册服务不仅繁琐且耗时,而且容易出错。因此,在这里,我们将讨论如何动态地一次注册所有服务。
让我们开始吧!
为了动态注册所有服务,我们将使用AspNetCore.ServiceRegistration.Dynamic 库。这是一个很小但非常有用的库,使您可以在不公开服务实现的情况下立即将所有服务注册到ASP.NET Core依赖注入容器中。
现在,首先将最新版本的AspNetCore.ServiceRegistration.Dynamic nuget软件包安装到您的项目中,如下所示:
Install-Package AspNetCore.ServiceRegistration.Dynamic
现在,让您的服务继承任何ITransientService,IScoperService和ISingletonService标记接口,如下所示:
// Inherit `IScopedService` interface if you want to register `IEmployeeService`
// as scoped service.
public class IEmployeeService : IScopedService
{
Task CreateEmployeeAsync(Employee employee);
}
internal class EmployeeService : IEmployeeService
{
public async Task CreateEmployeeAsync(Employee employee)
{
// Implementation here
};
}
现在在您ConfigureServices的Startup类方法中:
public void ConfigureServices(IServiceCollection services)
{
services.RegisterAllTypes(); // This will register all the
// Scoped services of your application.
services.RegisterAllTypes(); // This will register all the
// Transient services of your application.
services.RegisterAllTypes(); // This will register all the
// Singleton services of your application.
services.AddControllersWithViews();
}
在AspNetCore.ServiceRegistration.Dynamic.Extensions名称空间中RegisterAllTypes是可用的。
结论
仅此而已!任务完成!像上面一样简单,可以一次将所有服务动态注册到ASP.NET Core Dependency Injection容器中。如果有任何问题,可以将其提交到该库的Github存储库。您会尽快得到帮助。
.NET/.NET Core Dynamic Service Registration:
https://github.com/TanvirArjel/TanvirArjel.Extensions.Microsoft.DependencyInjection