[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的主要内容,如果未能解决你的问题,请参考以下文章

[Asp.Net Core] Autofac支持AOP-2

[Asp.Net Core] Autofac支持AOP-2

[Asp.Net Core]Autofac支持配置文件

[Asp.Net Core]Autofac支持配置文件

[Asp.Net Core]Autofac单抽象多实例属性注入

[Asp.Net Core]Autofac单抽象多实例属性注入