提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、Nuget 引入
Castle.Core
Autofac
Autofac.Extras.DynamicProxy
二、使用步骤
1.修改Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
//加入此行代码
.UseServiceProviderFactory(new AutofacServiceProviderFactory());
2.创建AOP 拦截器
public class CustomAutofacAop : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine("执行前。。。。");
invocation.Proceed();//
Console.WriteLine("执行后。。。。");
}
}
3.新建需要拦截的AOP 类,类 与接口两种方式
//类方式拦截方法
[Intercept(typeof(CustomAutofacAop))]//拦截的方法
public class AopClassTest
{
//函数必须加 virtual
public virtual void Get(String test)
{
Console.WriteLine("执行方法");
}
}
//拦截接口定义的方式
//接口
[Intercept(typeof(CustomAutofacAop))]
public interface IUtils
{
void Get(String test);
}
//接口实现类
public class Utils : IUtils
{
public void Get(String test)
{
Console.WriteLine("执行方法");
}
}
4.注册AOP 拦截器 ,修改Startup.cs
public void ConfigureContainer(ContainerBuilder builder)
{
builder.Register(c => new CustomAutofacAop());
builder.RegisterType<AopTest>().EnableClassInterceptors();//AOP拦截类
builder.RegisterType<Utils>().As<IUtils>().EnableInterfaceInterceptors();//接口
}
5.调用方式
与正常的接口调用方式一样 实现上述步骤即可。