• 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>();

    好了  结束

  • 相关阅读:
    2015年中国500强企业
    汇编语言
    oracle数据库学习路线
    OI生涯回忆录
    NOIP 2020游记
    CF223B Two Strings 题解
    CSP-S 2020游记
    CSP/NOIP 注意事项(2020)
    Luogu P6583 回首过去 题解
    Luogu P2210 Haywire 题解
  • 原文地址:https://www.cnblogs.com/liuyu7177/p/5941662.html
Copyright © 2020-2023  润新知