唐山市做网站,公司logo设计价格,室内设计装修风格大全,怎样下载别人网站自己做的视频目录
一、AOP 封装
二、类拦截 案例
三、接口拦截器 案例 AOP拦截器 可开启 类拦截器 和 接口拦截器 类拦截器 --- 只有方法标注 virtual 标识才会启动 接口拦截器 --- 所有实现接口的方法都会启动 一、AOP 封装
// 在 Program.cs 配置 builder.AddAOPExt();//自定义 A…
目录
一、AOP 封装
二、类拦截 案例
三、接口拦截器 案例 AOP拦截器 可开启 类拦截器 和 接口拦截器 类拦截器 --- 只有方法标注 virtual 标识才会启动 接口拦截器 --- 所有实现接口的方法都会启动 一、AOP 封装
// 在 Program.cs 配置 builder.AddAOPExt();//自定义 AOP 扩展
public static class CustomAOPExt
{public static void AddAOPExt(this WebApplicationBuilder builder){builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()) // 工厂替换把Autofac整合进来.ConfigureContainerContainerBuilder(containerBuilder {// 依赖注入containerBuilder.RegisterTypeCustomInterceptor(); containerBuilder.RegisterTypeStudent().AsIStudent().EnableClassInterceptors(); // 开启类拦截器 // containerBuilder.RegisterTypeStudent().AsIStudent().EnableInterfaceInterceptors(); // 开启接口拦截器});}
}
二、类拦截 案例
创建 Student 和 IStudent 测试类和接口 using Autofac.Extras.DynamicProxy;namespace LOG.Test;public interface IStudent
{void Method_A(string name);void Method_B(string name);void Method_C(string name);
}[Intercept(typeof(CustomInterceptor))]
public class Student : IStudent
{public void Method_A(string name){Console.WriteLine(Method_A name);}public virtual void Method_B(string name){Console.WriteLine(Method_B name);}public void Method_C(string name){Console.WriteLine(Method_C name);}
} 创建 -- CustomInterceptor (自定义拦截器) using Castle.DynamicProxy;namespace LOG.Test;/// summary
/// 自定义 方法拦截器
/// /summary
public class CustomInterceptor : IInterceptor
{public void Intercept(IInvocation invocation){Console.WriteLine($----Before--{invocation.Method.Name}-------);invocation.Proceed();Console.WriteLine($----After---{invocation.Method.Name}-------);}
} 创建 -- 控制器 -- 测试 三、接口拦截器 案例
开启 接口拦截器
// 在 Program.cs 配置 builder.AddAOPExt();//自定义 AOP 扩展
public static class CustomAOPExt
{public static void AddAOPExt(this WebApplicationBuilder builder){builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()) // 工厂替换把Autofac整合进来.ConfigureContainerContainerBuilder(containerBuilder {// 依赖注入containerBuilder.RegisterTypeCustomInterceptor(); // containerBuilder.RegisterTypeStudent().AsIStudent().EnableClassInterceptors(); // 开启类拦截器 containerBuilder.RegisterTypeStudent().AsIStudent().EnableInterfaceInterceptors(); // 开启接口拦截器});}
}
标识接口
using Autofac.Extras.DynamicProxy;namespace LOG.Test;[Intercept(typeof(CustomInterceptor))]
public interface IStudent
{void Method_A(string name);void Method_B(string name);void Method_C(string name);
}public class Student : IStudent
{public void Method_A(string name){Console.WriteLine(Method_A name);}public virtual void Method_B(string name){Console.WriteLine(Method_B name);}public void Method_C(string name){Console.WriteLine(Method_C name);}
}
创建 -- CustomInterceptor (自定义拦截器)
using Castle.DynamicProxy;namespace LOG.Test;/// summary
/// 自定义 方法拦截器
/// /summary
public class CustomInterceptor : IInterceptor
{public void Intercept(IInvocation invocation){Console.WriteLine($----Before--{invocation.Method.Name}-------);invocation.Proceed();Console.WriteLine($----After---{invocation.Method.Name}-------);}
}
创建 -- 控制器 如有错误烦请批评指正