net core 批量注入(DependencyInjection)

net core 使用微软默认的依赖注入:Microsoft.Extensions.DependencyInjection

1、声明IServiceCollection扩展

public static class Extensions
{
    public static IServiceCollection AddDataIntegrationService(this IServiceCollection services,
        IConfiguration configuration)
    {
        //注入ef code 数据连接为mysql
        services.AddDbContext<MyDbContext>(options =>
            {
                var conn = configuration.GetConnectionString("default");
                options.UseMySql(conn, ServerVersion.AutoDetect(conn));
            })
           
            //单个类手动注入dapper
              .AddScoped<IMyDapperRepository, MyDapperRepository>()
           
        
        services.Scan(scan =>
            //将扫描类型MyDbContext类(可指定任意类)所在的程序集,用来确定在那个程序集使用批量注入
            scan.FromAssemblyOf<MyDbContext>()
            //批量注入类反缀以“service”结尾的
                .AddClasses(classes =>
                    classes.Where(t => t.Name.EndsWith("service", StringComparison.OrdinalIgnoreCase)))
                .AsImplementedInterfaces()
                .WithScopedLifetime()
            //批量注入类反缀以“dal”结尾的
                .AddClasses(classes =>
                    classes.Where(t => t.Name.EndsWith("dal", StringComparison.OrdinalIgnoreCase)))
                .AsImplementedInterfaces()
                .WithScopedLifetime()
        );

        return services;
    }
}

2.在program中添加扩展

var builder = WebApplication.CreateBuilder(args);

builder.Services
       .AddDataIntegrationService(builder.Configuration);

3.使用示例

/// <summary>
/// 声明以"Service"为后缀的类接口
/// </summary>
public interface IOrderService
{

    Task Add(long Id);

}
/// <summary>
/// 声明以"Service"为后缀的实现类
/// </summary>
public class OrderService : IOrderService
{
    public async Task Add(long Id)
    {

        // todo..
    }
}


/// <summary>
/// 调用示例
/// </summary>
public class Order
{
    private readonly IOrderService _orderService;

    public Order(IOrderService orderService)
    {

        _orderService = orderService;
    }
    public async Task Add(long Id)
    {

        await _orderService.Add(Id);
    }

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值