Autofac 设置方法拦截器的两种方式
Posted 六欲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Autofac 设置方法拦截器的两种方式相关的知识,希望对你有一定的参考价值。
前提
1.Nuget安装Autofac 4.0以下版本 4.0及4.0 以上版本暂时没找到合适的方案
2.Nuget安装Autofac.Extras.DynamicProxy2
3.创建一个类似下面代码得 拦截类
public class TestInterceptor : IInterceptor { public void Intercept(IInvocation invocation) { string c = string.Format("Calling method {0} with parameters {1}... ", invocation.Method.Name, string.Join(", ", invocation.Arguments.Select(a => (a ?? "").ToString()).ToArray())); invocation.Proceed(); string b = string.Format("Done: result was {0}.", invocation.ReturnValue); } }
注:autufac文档
http://docs.autofac.org/en/latest/advanced/interceptors.html
第一种方式
在接口或者实现类添加[Intercept(typeof(TestInterceptor))]标签
如:
[Intercept(typeof(TestInterceptor))] public interface IPersonRepository { IEnumerable<Person> GetAll(); Person Get(int id); Person Add(Person item); bool Update(Person item); bool Delete(int id); }
添加注入代码的时候这样写:
builder.RegisterType<PersonRepository>().EnableInterfaceInterceptors().As<IPersonRepository>();
builder.RegisterType<TestInterceptor>();
第二种
不用添加[Intercept(typeof(TestInterceptor))]标签
添加注入代码的时候这样写:
builder .RegisterType<PersonRepository>() .EnableInterfaceInterceptors() .InterceptedBy(typeof(TestInterceptor)) .As<IPersonRepository>();
好了 结束
以上是关于Autofac 设置方法拦截器的两种方式的主要内容,如果未能解决你的问题,请参考以下文章
mybatis的两种分页方式:RowBounds和PageHelper
学习笔记——SpringMVC拦截器的两种装配方式;SpringMVC拦截器工作原理;SpringMVC中的异常处理器;SpringMVC工作原理