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

好了  结束

时间: 2024-12-19 13:48:32

Autofac 设置方法拦截器的两种方式的相关文章

【iOS开发-31】UITabBar背景、icon图标颜色、被选中背景设置以及隐藏UITabBar的两种方式

一.对UITabBar背景和icon图标的一些设置 (1)由于直接给UITabBar设置的背景颜色显示的不纯.半透明的感觉,所以,有时候我们能够直接利用纯色的图片作为背景达到想要的效果. (2)给icon图片改变颜色也是重要的有用方法之中的一个,默认的时蓝色. 在AppDelegate.m文件里:(1个导航控制器和5个视图控制器) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSD

关于设置iOS横竖屏的两种方式(转载)

iPhone的横屏竖屏针对iOS系统版本分为两种开发方式: 一种是iOS 6之前的使用模式 一种是iOS6的新模式. 两者的区别还是蛮大的. 1:iOS6之前通常使用 shouldAutorotateToInterfaceOrientation 来单独控制某个UIViewController的方向,需要哪个viewController支持旋转,只需要重写shouldAutorotateToInterfaceOrientation方法.如下示例,设置以后,屏幕被旋转时只支持横屏转换: - (BOO

使用工厂方法配置bean的两种方式

1.使用静态工厂方法: 对应的配置.xml文件: 2.通过实例工厂的方法来配置bean: 对应的xml文件:

ASP.NET MVC 方法View返回的两种方式

1.参数为字符串类型 例如我们在地址栏输入http://localhost:56431/Test/Index,会查找TestController类下的Index方法并执行,如下图 当我们返回字符串类型的参数的view的时候 会查找视图Views下Test下的aaa.cshtml并返回,如果没有该文件,会查找Shared文件夹下是否有,如果也没有,则会报错. 2.字符串类型和model类型 第一个参数“aaa”会去找View--Test下的aaa.cshtml,并将第2个model参数带入 注:当

向服务器传json数据的两种方式

接触到了向服务器传JSON数据,那么怎么把参数以JSON的形式,传到服务器呢.下面来说说,json字符串的得到方法.一共有两种方式来得到Json的字符串.当然,向服务器上传,不能传字符串,是要转成NSData的,也就是二进制的形式.这个在此不讨论,只说,怎么得到json的字符串. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法,是把要传的参数

SpringMVC 控制器默认支持GET和POST两种方式

在SpringMVC的controller中,@RequestMapping只写路径,不包含RequetMethod.GET和RequetMethod.POST,HttpServletRequest的getParameter("*")方法同时支持这两种方式. 1 @RequestMapping("savedata") 2 public @ResponseBody void savedata(HttpServletRequest req, HttpServletRes

华硕笔记本怎么设置u盘启动(两种方法)

华硕笔记本怎么设置u盘启动(两种方法) 华硕笔记本怎么设置u盘启动.我想用U盘安装系统但是 我不知道如何设置U盘启动,那么该如何设置呢?下面和大家分享一下我的经验,希望能够帮到大家.如果你的系统是预装win8的系统,那么如果你要想安装win7系统,需要你在BIOS中有相关的设置,你可以看我之前的经验,建议在百度上搜索---华硕笔记本预装win8改win7如何在bios中设置 工具/原料 华硕笔记本 U盘启动 方法一.bios设置开机启动 1 开机长按F2键,进入bios. 2 我们左右移动找到"

设置数据库兼容级别的两种方法以及区别

转:http://blog.csdn.net/htl258/article/details/5696325 --设置数据库兼容级别的两种方法 --以设置兼容SQL Serve 2005 为例 --法一: ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 90 GO --法二: EXEC sp_dbcmptlevel database_name,90 GO database_name 要修改为数据库的名称. 各参数值对应的数据库版本: 8

使用方法拦截器MethodInterceptor和AOP统一处理log

对每个接口的请求记录log的方法有很多种,比如用filter.mvc interceptor.method interceptor等.如果需要记录请求消息的payload,前两种不适用.下面介绍第三种的实现方法. 第一步:引入包依赖 <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name=&