NCoreCoder.Aop 国庆更新
原本的IAopActors如下
public interface IAopActors
{
object Execute(AopContext context);
Task<TResult> ExecuteAsync<TResult>(AopContext context);
Task InvokeAsync(AopContext context);
}
非代理部分是用的AspectCore.Extensions.Reflection优化的反射
个人感觉代码不够优雅,遂改为
public interface IAopActors
{
object Execute(Func<AopContext, object> invoke, AopContext context);
Task<TResult> ExecuteAsync<TResult>(Func<AopContext, Task<TResult>> invoke, AopContext context);
Task InvokeAsync(Func<AopContext, Task> invoke, AopContext context);
}
对JitAopAttribute部分做了修改
public class JitAopAttribute : Attribute
{
public virtual void Before(MethodReflector method, object instance, params object[] param)
{
Console.WriteLine($"Before Name:{method.Name}");
} public virtual void After(MethodReflector method, Exception exception, object instance, params object[] param)
{
Console.WriteLine($"After Name:{method.Name}");
} public virtual Task BeforeAsync(MethodReflector method, object instance, params object[] param)
{
Console.WriteLine($"BeforeAsync Name:{method.Name}");
return Task.CompletedTask;
} public virtual Task AfterAsync(MethodReflector method, Exception exception, object instance, params object[] param)
{
Console.WriteLine($"AfterAsync Name:{method.Name}");
return Task.CompletedTask;
}
}
After部分增加了异常捕获
委托部分用的Expression Tree而不是Emit,虽然底层都是一样的,但是Expression Tree的写法确实是要优雅很多的
注,这个项目持续跟进是为了个人学习和使用,功能和设计上,很多借鉴了AspectCore的思路,如果是个人学习,还是很有借鉴意义,如果处于公司的项目,需要完善度很高的Aop,还是推荐AspectCore 毕竟是完备程度最高的AOP
附上项目地址:https://github.com/htrlq/NCoreCoder.Framework
我偶像Lemon的AspectCore地址:https://github.com/dotnetcore/AspectCore-Framework
打个广告 如果对于这个项目有什么要交流的,欢迎加Q群 386092459
NCoreCoder.Aop 国庆更新的更多相关文章
- NCoreCoder.Aop详解
于今天,功能终于完善度到比较满意的程度了 准备好好写一篇文章,而不是之前的流水账,分享一下最近这些天的踩坑 一开始AOP选的微软提供的DispatchProxy 关于这个,有大佬的文章,可以看看,了解 ...
- smartjs 0.2发布 - 新增oop模块&AOP增强
SmartJS2.0发布,更新内容如下: 新增oop(klass,factory)模块: promiseEvent加入非阻塞模式noBlock: trigger加入属性监听; smartjs主模块优化 ...
- 01_安装电脑软件的步骤批处理脚本.bat
REM 01_安装电脑软件的步骤批处理脚本.bat MD 01_安装电脑软件的步骤 REM ZIP解压密码空格MD 02_制作杏雨梨云USB维护系统2019中秋版之国庆更新固态U盘MD 03_复制安装 ...
- 电脑软件安装过程文档.BA
MD 01-打印并阅读-电脑软件安装过程文档.BAT-即此批处理脚本文档MD 02-阅读-电脑软件安装经验教训文档.DOCX-MD 03-制作-杏雨梨云USB维护系统2019中秋版之国庆更新-可启动U ...
- 'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写
'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写 'Rem Everything是voidtools开发的一款本地NTFS文件和 ...
- SpringCloud或SpringBoot+Mybatis-Plus利用AOP+mybatis插件实现数据操作记录及更新对比
引文 本文主要介绍如何使用Spring AOP + mybatis插件实现拦截数据库操作并根据不同需求进行数据对比分析,主要适用于系统中需要对数据操作进行记录.在更新数据时准确记录更新字段 核心:AO ...
- SpringBoot AOP控制Redis自动缓存和更新
导入redis的jar包 <!-- redis --> <dependency> <groupId>org.springframework.boot</gro ...
- 国庆前执行更新承诺SO交期 FP_SO2SAP
每年9月20日到30号执行以下程序:创建日期为昨天的订单,且承诺交期为10月1到3号,则承诺交期需加7天:创建日期为昨天的订单, 承诺交期为4号到11月1日,承诺交期需加4天 存储过程:FP_SO2S ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
随机推荐
- CTF_show平台 web题解 part1
web3 题目描述: 方法一:RFI 使用url实现php远程文件包含 在服务器上构造1.txt <?php $a = "<?php eval(\$_POST['123'])?& ...
- CTFHub_技能树_SQL注入Ⅰ
SQL注入 布尔盲注 查看页面: 尝试输入测试信息: 提示为布尔注入,构造相应payload: ?id=1 and ascii(substr((select database()),1,1))> ...
- 数据结构之二叉搜索树(BST)--JavaScript实现
原理: 叉排序树的查找过程和次优二叉树类似,通常采取二叉链表作为二叉排序树的存储结构.中序遍历二叉排序树可得到一个关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程 ...
- scala 数据结构(九):-filter、化简
1 filter filter:将符合要求的数据(筛选)放置到新的集合中 应用案例:将 val names = List("Alice", "Bob", &qu ...
- 机器学习实战基础(三十五):随机森林 (二)之 RandomForestClassifier 之重要参数
RandomForestClassifier class sklearn.ensemble.RandomForestClassifier (n_estimators=’10’, criterion=’g ...
- Java常用API(Math类)
Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...
- Ethical Hacking - Web Penetration Testing(10)
SQL INJECTION SQLMAP Tool designed to exploit SQL injections. Works with many DB types, MySQL, MSSQL ...
- Ethical Hacking - GAINING ACCESS(2)
Server Side Attacks - INFORMATION GATHERING Need an IP address. Very simple if target is on the same ...
- 【译】GraalVM—下一代JVM介绍
原标题:GraalVM – an introduction to the next level JVM 随着Red Hat宣布Quarkus作为- 为GraalVM和HotSpot量身定制的下一代Ku ...
- ATX学习(一)-atx-server
今天无意中发现了ATX手机设备管理平台,瞬间勾引起了我极大的兴趣,这里对学习过程中的情况做个记录. 1.搭建环境 先按照作者步骤搭建环境出来吧,哇,突然发现ATX搭建环境很方便(一会就搭建好了) ...