dotnet core webapi 实现依赖注入和动态代理(切面)

本文介绍如何使用AspectCore.Extensions.DependencyInjection实现依赖注入和动态代理。通过NuGet包安装后,在Startup配置服务,并利用Attribute方式实现拦截器,完成属性注入及方法调用前后的日志记录。
摘要由CSDN通过智能技术生成

这里使用的是AspectCore.Extensions.DependencyInjection这个nuget包,地址是https://www.nuget.org/packages/AspectCore.Extensions.DependencyInjection/

安装完这个包之后,第一步,需要在startup文件中添加如下代码

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    /* register service */
    return services.ToServiceContainer().Build();
}

这个包可以实现属性注入以及动态代理,动态代理有两种方式,这里介绍使用Attribute的方式。

public class LogRecordInterceptorAttribute : AbstractInterceptorAttribute
{
    // 属性注入
    [FromContainer]
    public ILogger<LogRecordInterceptorAttribute> Logger { get; set; }

    public override async Task Invoke(AspectContext context, AspectDelegate next)
    {
        MethodInfo method = context.ImplementationMethod;
        string invokeMessage = $"{method.DeclaringType.Name}.{method.Name}()";

        Logger.LogTrace($"{invokeMessage}..."); // 方法调用之前
        await context.Invoke(next);
        Logger.LogTrace(invokeMessage); // 方法调用之后
    }
}

对于需要注入的属性,使用FromContainer进行标注。InterceptorAttribute标签可以放在类上和方法上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值