https://github.com/mnoskovic/Castle.Aop

同样是基于dynamicproxy的,支持autofac

结果比snap靠谱

aop 1 before
aop 1 in
aop 2 in
real method runing
aop 2 out
aop 1 out
aop 1 after

顺序是希望的顺序

可以继承StandardInterceptor或直接实现IInterceptor

用Interceptor(typeof(XXX))这个attribute做标记

autofac需要

var builder = new ContainerBuilder();
builder.RegisterModule(new InterceptorModule());
builder.RegisterType<Aop1>();
builder.RegisterType<Aop2>();
builder.RegisterType<TestHelper>().As<ITestHelper>();

1、注册InterceptorModule

2、注册aop类

3、注册真正的类

至少顺序比snap靠谱,性能未测试

看看在aop里改参数

aop 1 before
p is 1; r is (is null:True)
aop 1 in
p is 2; r is (is null:True)
aop 2 in
p is 3; r is (is null:True)
real method runing; r is 6
aop 2 out
p is 6; r is (is null:True)
aop 1 out
p is 7; r is (is null:True)
aop 1 after
p is 4; r is (is null:True)

方法调用传入1,aop1的before改为2,aop1 process前改为3,process后改为4,aop1 after改为5,aop2 process前改为6,后改为7。

实际传入的是6

去掉6,实际传入的是3;去掉3,实际传入的是2,去掉2,实际传入的是1,基本上还是符合预想的。

但是返回值就让我有点郁闷了,为什么都是null尼?方法执行完了还是null,这不扯呢嘛。而且外部调用确实也是没有收到返回值的。

转载于:https://www.cnblogs.com/czcz1024/archive/2013/06/05/3119357.html

Castle.Aop.Autofac相关推荐

  1. AOP原理解析及Castle、Autofac、Unity框架使用

    转自:https://www.cnblogs.com/neverc/p/5241466.html AOP介绍 面向切面编程(Aspect Oriented Programming,英文缩写为AOP), ...

  2. 在ASP.NET Core中使用AOP来简化缓存操作

    前言 关于缓存的使用,相信大家都是熟悉的不能再熟悉了,简单来说就是下面一句话. 优先从缓存中取数据,缓存中取不到再去数据库中取,取到了在扔进缓存中去. 然后我们就会看到项目中有类似这样的代码了. pu ...

  3. AOP在 .NET中的七种实现方法

    这里列表了我想到的在应用程序中加入AOP支持的所有方法.这里最主要的焦点是拦截,因为一旦有了拦截其它的事情都是细节. Approach 方法 Advantages 优点 Disadvantages 缺 ...

  4. 微服务中的面向切面编程和更多模式

    目录 介绍 如何建立这篇文章? 在Java中使用代码(11 +,Spring boot 2.2 +,Spring Boot AOP,AspectJ) 在C#中使用代码(7,.NET MVC Core ...

  5. 记一次 .NET 某HIS系统后端服务 内存泄漏分析

    一:背景 1. 讲故事 前天那位 his 老哥又来找我了,上次因为CPU爆高的问题我给解决了,看样子对我挺信任的,这次另一个程序又遇到内存泄漏,希望我帮忙诊断下. 其实这位老哥技术还是很不错的,他既然 ...

  6. [翻译]Orchard如何工作

    Orchard一直是博主心中神一般的存在,由于水平比较菜,Orchard代码又比较复杂看了几次都不了了之了.这次下定决心要搞懂其工作原理,争取可以在自己的项目中有所应用.为了入门先到官网去学习一下相关 ...

  7. orchard文档之-orchard工作原理

    Orchard工作机制 创建一个 Web CMS (内容管理系统)与创建普通的web应用程序不一样.它更像是建造一个应用程序容器.当设计一个这样的系统时,可扩展性必须作为首要的特性. 这会是一个挑战, ...

  8. .net/c#常用框架/中间件简介

    任务调度 Quartz.NET:Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允 许开发人员根据时间间隔 ...

  9. ASP.NET Core 整合Autofac和Castle实现自动AOP拦截

    前言: 除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninject和Castle). 1.ASP ...

最新文章

  1. STM32 BOOT0连接不当造成死机
  2. Mysql基础运用(视图,变量,存储,流程控制)
  3. AWS的VPC使用经验(二)
  4. foo( a )JAVA面试题_Java相关面试题总结+答案(五)
  5. vscode 生成mvc_ASP.NET MVC 简介(附VS2019和VSCode版示例)
  6. C#获取%AppData%路径的方法
  7. 【LOJ】#2187. 「SHOI2014」三叉神经树
  8. 大学报到前最后的技术——VMware探究
  9. 计算机中用于表示储存,计算机中用来表示存储器容量的基本单位是
  10. BP算法简单推导过程
  11. 扩增子图表解读2散点图:组间整体差异分析(Beta多样性)
  12. 【航拍中国第二季】甘肃笔记
  13. 《信息安全技术》实验三 数字证书应用
  14. 车牌识别matlab实现(蓝色车牌和新能源车牌)
  15. 大班如果我有机器人教案_大班科学机器人教案
  16. esxi导出ovf报错
  17. -- 27、 查询出只有两门课程的全部学生的学号和姓名(不重点)(自己做出)
  18. android 3d成像,android camera 实现3d效果
  19. 校园二手物品交易系统
  20. reply-code=503, reply-text=COMMAND_INVALID - unknown exchange type 'x-delayed-message'

热门文章

  1. 延迟初始化Spring Bean的几种方式
  2. UVa 11292 勇者斗恶龙(The Dragon of Loowater)
  3. 转一篇矩阵方面有趣的文章
  4. Zeu.js 1.3.1 发布, 分布式系统可视化
  5. CentOS 7系统,Docker想启用userns-remap,傻了吧?
  6. java的反射机制的好处
  7. IDEA开发WebService遇到的问题和SOAPUI工具的使用
  8. JDBC连接错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。。。
  9. 让VMware ESXi 5.5与Windows时间服务器同步
  10. 基于Ruby的Watir-WebDriver自动化测试框架