.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();
}

最新文章

  1. 谈谈一些有趣的CSS题目(十)-- 结构性伪类选择器
  2. 响应式手机商城页面顶部样式HTML代码
  3. C++与C的指针的不同
  4. androi手机解锁引导程序
  5. iOS多线程实现1-pthread
  6. 攻城狮在路上(壹) Hibernate(一)--- 软件环境、参考书目等一览表
  7. salt-master 的配置文件详解
  8. textarea宽度、高度自动适应处理方法
  9. 408. Valid Word Abbreviation
  10. JavaScript_object基础
  11. LANG=C是最早最简单的C语言环境(标准ASCII码)
  12. SSAS系列——【06】多维数据(创建Cube)
  13. 查看Oracle正在执行的任务
  14. 遮盖层实现(jQuery+css+html)
  15. Activity 的 4 种加载模式
  16. Database operations of Mysql
  17. 敏捷冲刺(Beta版本)
  18. Scala 快速入门
  19. Perl多线程(1):解释器线程的特性
  20. arcgis for js开发之路径分析

热门文章

  1. 如何构建自己的docker镜像
  2. 【Java/JDBC】利用ResultSetMetaData从数据库的某表中获取字段信息并存到csv文件
  3. Android:动态库(.so)调试技巧
  4. Oracle 的 oracle 数据库分类
  5. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_11-修改页面-前端-Api调用
  6. Clonezilla克隆还原系统
  7. Hadoop 部署之 Hadoop (三)
  8. 利用先电云iaas平台搭建apache官方大数据平台(ambari2.7+hdp3.0)
  9. 【VS开发】CString 转为 char *方法大全
  10. MVC框架实例教程 【转载】