项目地址 :  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. 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现(二)[超详细教程] ubuntu16.04版本

    本节对应谷歌开源Tensorflow Object Detection API物体识别系统 Quick Start步骤(一): Quick Start: Jupyter notebook for of ...

  2. day 67 django orm的基础

    django项目 安装: 创建项目 配置(setting,static,csrf) 创建app,python manage.py startapp app1 三部分 urls.py路由配置 1,普通正 ...

  3. UIIimageView读取图片的两种方式及动画的执行

    /**count:图片数量 name:图片名称*/ - (void)runAnimationWithCount:(int)count name:(NSString *)name { if(self.t ...

  4. 安装vue-cookie

    // 安装cookie的命令// npm install vue-cookie --save// 为项目配置全局vue-cookieimport VueCookie from 'vue-cookie' ...

  5. java学习笔记27(File类)

    File类: 定义:文件和目录径的抽象表示形式, Java中将路径或者文件封装成File对象 1.File类的静态成员变量 package com.zs.Demo2; import java.io.F ...

  6. binarysearchtree

    public class binarytree<Value> { private Node root = null; private class Node{ private Value v ...

  7. JAVA之字母与相对应数字转换

    26个字母大小写加起来就是52个.对应的数字范围 System.out.println((char)97);//aSystem.out.println((char)122);//zSystem.out ...

  8. pyx文件 生成pyd 文件用于 cython调用

    转于:https://www.2cto.com/kf/201405/304168.html 1. 初衷 最近学用python,python不愧是为程序员考虑的编程语言,写起来很快很方便,大大节省开发效 ...

  9. 易混点总结--JS

    1.defer与 async 的区别是: defer要等到整个页面在内存中正常渲染结束(DOM 结构完全生成,以及其他脚本执行完成),才会执行:async一旦下载完,渲染引擎就会中断渲染,执行这个脚本 ...

  10. spring-dao.xml配置问题(一)

    问题描述:对mapper扫描器进行配置时,sqlSessionFactory依赖报错 <!-- 配置sqlSessionFactory --> <bean id="sqlS ...