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