[Asp.Net Core]Autofac抽象支持AOP
Posted 厦门德仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]Autofac抽象支持AOP相关的知识,希望对你有一定的参考价值。
AOP面向切面编程;不用修改之前代码的基础上,可以动态的在某个动作之前加一些操作,动态在在某一个动作之后做点什么事儿
1.Nuget引入Castle.Core程序集+Autofac.Extras.DynamicProxy程序集
2.定注意切入者:如下,需要继承IInterceptor,实现方法
namespace DeZai.Net5Demo.Common.AutofacExtension
public class CustomAutofacAop : IInterceptor
public void Intercept(IInvocation invocation)
Console.WriteLine("方法执行前");
invocation.Proceed();//执行这句话就是去执行具体的实例的这个方法
Console.WriteLine("方法执行后");
3.在服务的抽象上标记[Intercept(typeof(CustomAutofacAop))]
[Intercept(typeof(CustomAutofacAop))] //AOP能够在当前接口生效
public interface ITestServiceA
void Show();
4.注册支持AOP扩展的类
#region Autofac支持AOP
containerBuilder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource(t => t.IsAssignableTo<ITestServiceA>()));
containerBuilder.RegisterType(typeof(CustomAutofacAop));
#endregion
5.注册服务的时候,需要需要调用EnableInterfaceInterceptors,标记说明当前服务获取实例后可以支持AOP
containerBuilder.RegisterType<TestServiceUpdate>().As<ITestServiceA>().EnableInterfaceInterceptors(); //接口
containerBuilder.RegisterType<TestServiceA>().As<ITestServiceA>().EnableInterfaceInterceptors();
以上是关于[Asp.Net Core]Autofac抽象支持AOP的主要内容,如果未能解决你的问题,请参考以下文章