zoukankan      html  css  js  c++  java
  • 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>();

    好了  结束

  • 相关阅读:
    A1035
    A1005
    A1073
    A1061
    A1058
    A1027
    A1019
    Java 操作临时文件创建与删除
    面试必会之HashMap源码分析
    springboot整合cxf框架启动报错
  • 原文地址:https://www.cnblogs.com/liuyu7177/p/5941662.html
Copyright © 2011-2022 走看看