# LC_MyReflection **Repository Path**: lc_tlz/LC_MyReflection ## Basic Information - **Project Name**: LC_MyReflection - **Description**: 1、dll-IL-metadata-反射;2、反射加载dll,读取module、类、方法、特性;3、反射创建对象,反射+简单工厂+配置文件;4、反射调用实例方法、静态方法、重载方法、私有方法、调用泛型方法;5、反射字段和属性,分别获取值和设置值;6、反射的好处和局限; - **Primary Language**: C# - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-07-29 - **Last Updated**: 2023-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LC_MyReflection /// /// 1、dll-IL-metadata-反射; /// 2、反射加载dll,读取module、类、方法、特性; /// 3、反射创建对象,反射+简单工厂+配置文件; /// 4、反射调用实例方法、静态方法、重载方法、私有方法、调用泛型方法; /// 5、反射字段和属性,分别获取值和设置值; /// 6、反射的好处和局限; /// /// 反射反射,程序员的快乐 /// 反射是无处不在的,MVC-Asp.Net-ORM-IOC-AOP 几乎所有的框架都离不开反射 /// /// 反编译工具不是用的反射,是一个逆向工程 /// IL:也是一种面向对象的语言,只不过是不太好阅读 /// metadata:数据清单,描述DLL/exe里面的各种信息 /// /// 反射Reflection:是.Net Framework提供的一个帮助类库,可以读取并使用metadata /// /// /// 反射优点:动态、热启动 /// 反射缺点:1、使用麻烦;2、避开编译器检查;3、性能问题(没有想象的夸张,要正确看待) /// 100w次循环创建对象 普通方法 41ms /// 反射 6512ms /// -----但是,换个角度分析下,100次循环,反射耗时0.65ms,也就是说,反射基本不会影响到你的程序性能,除非你循环太多反射了。 /// 缓存优化,把dll加载和类型获取 只执行一次 /// 100w次循环创建对象 普通方法 48ms /// 反射 103ms /// 反射影响是不是更小了,是的。 /// MVC-Asp.Net-ORM-IOC-AOP都在使用反射,几乎都有缓存 /// MVC&&ORM启动慢,完成很多初始化,反射的那些东西,后面就运行快了。 /// 缓存---反射优化:事先将dll通过反射加载出来,然后创建对象可以放入静态字典内。 /// -----------------------这才是使用反射的正确姿势!!! /// ![image](https://user-images.githubusercontent.com/26539681/114154885-789fb580-9953-11eb-81bf-78362f5d1d4e.png) ![image](https://user-images.githubusercontent.com/26539681/114155040-9c62fb80-9953-11eb-8ea0-e10caca4d389.png) ![image](https://user-images.githubusercontent.com/26539681/114155154-bf8dab00-9953-11eb-90d6-2e8484caedc1.png) 希望为.net开源社区尽绵薄之力,探lu者###一直在探索前进的路上###(QQ:529987528)