.Net Core IOC依赖注入和Autofac 实现AOP(三)
程序员文章站
2024-01-29 17:52:04
...
之前利用了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可以实现如事务,缓存,权限验证的功能。
推荐阅读
-
.Net Core IOC依赖注入和Autofac 实现AOP(三)
-
ASP.NET Core 2.2 WebApi 系列【三】AutoFac 仓储接口的依赖注入
-
ASP.NET Core依赖注入解读及使用Autofac替代实现
-
ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便
-
ASP.NET Core 2.2 WebApi 系列【三】AutoFac 仓储接口的依赖注入
-
ASP.NET CORE 第四篇 依赖注入IoC学习 + AOP界面编程初探
-
ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)
-
ASP.NET Core依赖注入解读及使用Autofac替代实现
-
ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便