DispatchProxy是微软爸爸编写的一个代理类,基于这个,我扩展了一个AOP组件

暂时不支持依赖注入构造方法,感觉属性注入略显麻烦,暂时没打算支持

基于特性的注入流程

    [AttributeUsage(AttributeTargets.Method)]
internal class TestAttribute:AopAttribute
{
protected override Task BeforeAsync(MethodInfo targetMethod, object[] args)
{
Console.WriteLine($"BeforeAsync {targetMethod.Name}");
return base.BeforeAsync(targetMethod, args);
} protected override Task AfterAsync(MethodInfo targetMethod, object[] args)
{
Console.WriteLine($"AfterAsync {targetMethod.Name}"); return base.AfterAsync(targetMethod, args);
}
}

编写接口

    public interface ITest
{
[Test]
void TestVoid();
[Test]
int TestInt();
[Test]
Task TestAsync();
[Test]
Task<int> TestIntAsync();
}

整体结构是依赖注入,再实现一个实现类就好

特性打在接口的方法上

刚开坑,暂时只支持特性对应方法

调用

services.AddNCoreCoderAop<ITest, Test>(ServiceLifetime.Transient);

方法支持同步和异步两种

支持Singleton、Scoped、Transient三种生命周期,默认生命周期是Singleton

项目地址:

https://github.com/htrlq/NCoreCoder.Framework

最新文章

  1. 单例模式中用volatile和synchronized来满足双重检查锁机制
  2. POJ No.3617【B008】
  3. Java反射的三种实现方式
  4. Windows下查看端口占用
  5. linux 访问tomcat 管理页面时 You are not authorized to view this page 403(真实可用)
  6. php获取网页内容方法总结
  7. ant条件逻辑
  8. EventHandler委托的使用
  9. ZOJ 3794 Greedy Driver
  10. EJB体系结构
  11. network: Android 网络推断(wifi、3G与其它)
  12. css javascript 自动化压缩(保存后即自动生成压缩文件)
  13. Shuffle过程的简单介绍
  14. java 第三次作业
  15. vue省市区三级联动
  16. docker之使用System.Drawing生成图片缺少Gdiplus.dll错误
  17. gitlab配置通过smtp发送邮件(QQ exmail腾讯企业为例)
  18. MT【206】证明整数数列
  19. awk 用法(转)
  20. 【二项式定理】【DFS】UVALive - 7639 - Extreme XOR Sum

热门文章

  1. java学习第二天 20207/7
  2. 【DevCloud &#183; 敏捷智库】两种你必须了解的常见敏捷估算方法
  3. nuxt.js使用scss
  4. JVM 专题二十一:垃圾回收(五)垃圾回收器 (二)
  5. python面试题七: mysql数据库
  6. Celery无法注册任务的几种情况
  7. pointer-events:none 的应用
  8. 德布鲁因序列与indexing 1
  9. 随笔java面试基础
  10. 软件测试工程师应该怎样规划自己?成为年薪30W+测试工程师(乾坤未定,皆是黑马)