项目地址 :  https://github.com/kelin-xycs/LambdaAOP

LambdaAOP

一个 用 C# 实现的 使用 Lambda 表达式 的 AOP

这是 一个 用 C# 实现的 使用 Lambda 表达式 的 AOP 。

用 Lambda 表达式 来 实现 AOP 这个 想法 来自于 Polly.Net 。

一开始 看到 Polly.Net 的 时候, 只看到 一堆 police.Handle() , police.Handle() , police.Handle() …… police.ReTry() ……

就没看到 在 哪里调用 要执行的 方法 , 然后 就 觉得 , Polly.Net 这个 好像 AOP 啊 , 而且 这个 AOP 有点牛 , 有点 指哪打哪 的 意思 了 。 ^^

后来看到 police.Execute( () => DoSomething() ) , 才 发现 , 哦 , 原来 是 通过 police.Execute( ) 方法 执行 的 , 而且 使用了 Lambda 表达式 。

所以 就 觉得 Lambda 表达式 很适合 来 实现 AOP , 所以 就写 了 这个 项目 。

通过 LambdaAOP , 可以 让一个 普通对象 乃至于 静态方法 瞬间 拥有 AOP 特性 , 也可以 瞬间 取消 。 即插即用 , 即拔即停 , 代码透明 , 绿色 环保 无污染 。 ^^ ^^ ^^

这要 归功于 Lambda 表达式 在 语法 和 实现 上的 支持 。 实现 是指 System.Linq.Expressions 。

System.Reflection , System.Reflection.Emit , System.Linq.Expressions
这 3 者 是 关联 的 , 但 有意思 的 是 Expressions 是 归到了 System.Linq 。

好了 不多说了 , 用法 和 原理 看代码 吧 。 :)

LambdaAOP的更多相关文章

  1. 我发起并创立了一个 .Net 平台上的 Web 业务系统 基础库 开源项目 WebEasy

    我 强调一点, 程序员 应该对 程序 有 控制感 . 过多的 控制反转 使 程序员 丧失了 对 程序 的 控制感 . 过多的 依赖注入 束缚了 程序员 的 创造力 . 过度复杂的 架构设计 束缚了 程 ...

随机推荐

  1. mybatis学习(五)----实现关联表查询

    一.一对一的表查询 查询班级表中班级号为1的对应的记录(包括教师的具体信息) 1.首先建立数据表 数据表class和techear,class表中只有一个外键techear_id,sql脚本如下: C ...

  2. 国行 lg g3 D858 刷 lg g3 D858hk 教程(备忘)

    纯手打,转载请注明出处~ 刷机有风险,出现问题概不负责! 本着自娱自乐的宗旨 ,分享一下,出了问题不负责! 准备的材料: 1,手机一枚(废话)国行lg g3 d858 2,root 工具 用来root ...

  3. Java语法基础学习DaySix

    一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...

  4. adb shell按键操作(input keyevent)

    前言:input keyeven操作发送手机上常用的一些按键操作 一.keyevent事件对应数字 电话键 KEYCODE_CALL: 拨号键 KEYCODE_ENDCALL: 挂机键 KEYCODE ...

  5. Spring Boot项目中使用Swagger2

    Swagger2是一款restful接口文档在线生成和在线接口调试工具,Swagger2在Swagger1.x版本的基础上做了些改进,下面是在一个Spring Boot项目中引入Swagger2的简要 ...

  6. c# GetType()和typeof()的区别

    c#   GetType()和typeof()的区别 C#中任何对象都具有GetType()方法,返回Type类型的当前对象的类型. GetType()是基类System.Object的方法,因此只有 ...

  7. English (一)

    Phrase        do somebody a favour give sb a hand do something for sb come to sb aid  帮助某人 what can ...

  8. Maven安装Oracle驱动包到本地仓库

    驱动下载地址:https://download.csdn.net/download/yang_lover/9455401 mvn install:install-file -DgroupId=com. ...

  9. 构建工具 —— Groovy 与 Gradle

    1. Gradle Gradle 是一个基于 Groovy 的构建工具,使用 Groovy 来编写构建脚本,类似 maven,支持依赖管理和多项目创建. 相比 maven,更轻量: windows c ...

  10. vsftp管理脚本(CentOS6用)

    #!/bin/bash # ### BEGIN INIT INFO # Provides: vsftpd # Required-Start: $local_fs $network $named $re ...