提示:一般情况下我们都是使用一个接口一个实现类,但是有一些情况,我们为了实现多态,我们会定义一个接口,多个实现类。这种情况我们在NetCore自带的依赖注入容器中,我们应该怎么来实现呢?
目录
前言
一般情况下我们都是使用一个接口一个实现类,但是有一些情况,我们为了实现多态,我们会定义一个接口,多个实现类。这种情况我们在NetCore自带的依赖注入容器中,我们应该怎么来实现呢?
一、什么是依赖注入?
依赖注入(Dependency Injection),是这样一个过程:由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。
二、使用步骤
1.首先我们写一个扩展服务来批量注入我们的服务
代码如下(示例):
using JuCheap.WebApi.Common;
using JuCheap.WebApi.TenantCustomServices;
using JuCheap.WebApi.TenantFactory;
using JuCheap.WebApi.TenantServices;
using JuCheap.WebApi.Utils;
using Microsoft.Extensions.DependencyInjection;
using System.Linq;
using System.Reflection;
namespace JuCheap.WebApi
{
/// <summary>
/// 模块初始化
/// </summary>
public static class JuCheapServiceRegistor
{
public static void AddJuCheapService(this IServiceCollection services)
{
//基础服务注册
services.AddScoped<ITenantFactoryService, TenantFactoryService>();
services.AddScoped<IRedisService, RedisService>();
services.AddScoped<ITenantServiceBase, TenantServiceBase>();
//批量注入租户级自定义服务
var serviceRegistrations = typeof(TenantServiceBase).Assembly.GetTypes()
.Where(type => type.Namespace != null

最低0.47元/天 解锁文章
2524

被折叠的 条评论
为什么被折叠?



