.Net Core IOC依赖注入和Autofac 实现AOP(三)

之前利用了Autofac来实现IOC,当然Autofac也可以实现AOP的,之前在.Net Framework中就这么使用的,那在.Net Core中应该也可以的。

方法也很简单,Autofac就配置方法就不讲了,前面有讲到,就在前面配置好Autofac的基础上来讲下Aop的配置。需要增加新的库,

Autofac.Extras.DynamicProxy

使用nuget进行安装下,前面几项也是需要的,只不过之前将Autofac的时候已经安装好了,这次就增加最后项就行了。

配置方法如下,新增一个Aop类,AopTest继承IInterceptor,然后实现Intercept方法就行了,Invocation.Proceed()前就是写你的方法执行前需要执行的,后就是你方法执行后的

    public class AopTest : IInterceptor {
        public void Intercept(IInvocation invocation) {
            MethodInfo methodInfo = invocation.MethodInvocationTarget;
            if (methodInfo == null) methodInfo = invocation.Method;
            string methodName = invocation.InvocationTarget.ToString() + "." + invocation.Method.Name;
            Log4NetHelper.Info($"before start {methodName}", typeof(AopTest));
            invocation.Proceed();
            Log4NetHelper.Info($"finish start {methodName}", typeof(AopTest));
        }
    }

 然后增加下配置

在之前Autofac.config文件中增加

            //AOP
            builder.Register(c => new AopTest());
            builder.RegisterType<ServiceA>().As<IServiceA>().InstancePerLifetimeScope().EnableInterfaceInterceptors().InterceptedBy(typeof(AopTest));

这样调用ServiceA中方法时就会执行Aop中的动作了。配置中EnableInterfaceInterceptors不能少,当然配置中指定实现Aop的这句代码InterceptedBy(typeof(AopTest)),我们可以不使用,而是通过另外一种特性的方法来指定Aop,可以在ServiceA中增加特性    [Intercept(typeof(AopTest))]来实现,两者效果是一样的,看你用哪个方便了。

Aop可以实现如事务,缓存,权限验证的功能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值