首页 > 代码库 > Autofac 设置方法拦截器的两种方式
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 设置方法拦截器的两种方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。