aspectcore 简单解析
2024-10-06 16:42:41
.netcore 下aspectcore 的使用
动态代理:
static void Main(string[] args)
{
Console.WriteLine("Hello World!"); using (IProxyGenerator proxyGenerator = new ProxyGeneratorBuilder().Build())
{
var p = proxyGenerator.CreateClassProxy<Test>();
p.myPrint(); var p3 = proxyGenerator.CreateClassProxy<Test2>();
p3.myPrint();
}
Console.Read();
Console.WriteLine("Hello World!********************");
}
红色的p,类型是 AspectCore.DynamicGeneratedqgb.Test
这个类型是动态产生的。
ProxyGeneratorUtils类下的方法 private Type CreateClassProxyInternal(string name, Type serviceType, Type implType, Type[] additionalInterfaces, IAspectValidator aspectValidator)
private Type CreateClassProxyInternal(string name, Type serviceType, Type implType, Type[] additionalInterfaces, IAspectValidator aspectValidator)
{
var interfaces = additionalInterfaces.Distinct().ToArray();
//这个类可以被编译成一个 Type. 下面能动态生成构造函数,和方法。
var typeDesc = TypeBuilderUtils.DefineType(_moduleBuilder, name, serviceType, implType, interfaces); typeDesc.Properties[typeof(IAspectValidator).Name] = aspectValidator; //define constructor
ConstructorBuilderUtils.DefineClassProxyConstructors(serviceType, implType, typeDesc); //define methods
MethodBuilderUtils.DefineClassProxyMethods(serviceType, implType, additionalInterfaces, typeDesc); PropertyBuilderUtils.DefineClassProxyProperties(serviceType, implType, additionalInterfaces, typeDesc); return typeDesc.Compile();
}
最新文章
- 谈谈一些有趣的CSS题目(十)-- 结构性伪类选择器
- 响应式手机商城页面顶部样式HTML代码
- C++与C的指针的不同
- androi手机解锁引导程序
- iOS多线程实现1-pthread
- 攻城狮在路上(壹) Hibernate(一)--- 软件环境、参考书目等一览表
- salt-master 的配置文件详解
- textarea宽度、高度自动适应处理方法
- 408. Valid Word Abbreviation
- JavaScript_object基础
- LANG=C是最早最简单的C语言环境(标准ASCII码)
- SSAS系列——【06】多维数据(创建Cube)
- 查看Oracle正在执行的任务
- 遮盖层实现(jQuery+css+html)
- Activity 的 4 种加载模式
- Database operations of Mysql
- 敏捷冲刺(Beta版本)
- Scala 快速入门
- Perl多线程(1):解释器线程的特性
- arcgis for js开发之路径分析
热门文章
- 如何构建自己的docker镜像
- 【Java/JDBC】利用ResultSetMetaData从数据库的某表中获取字段信息并存到csv文件
- Android:动态库(.so)调试技巧
- Oracle 的 oracle 数据库分类
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_11-修改页面-前端-Api调用
- Clonezilla克隆还原系统
- Hadoop 部署之 Hadoop (三)
- 利用先电云iaas平台搭建apache官方大数据平台(ambari2.7+hdp3.0)
- 【VS开发】CString 转为 char *方法大全
- MVC框架实例教程 【转载】