前提
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>();
好了 结束
时间: 2024-10-14 06:57:57