在Framework 4.0中:找出新增的方法与新增的类(一)
发布时间:2021-07-07 05:26:07
标签:Framework,4.0,新增的方法,新增的类
程序思路:动态加载V4和V2的mscorlib.dll程序集,通过反射进行比较。
之所以加载mscorlib.dll 是因为framework中的大部分类都在这里,而发生变更的也就是这里最多。
第一步:新建控制台程序:
加载程序集:
加载程序集完成后,自然要获取程序集中的所有Type,这里直接使用默认的GetTypes方法。
获取了v4Types 和v2Types之后,就要对v2Types里面的所有Type于v4Types里面的所有Type进行比较,
而比较的内容就是GetMembers返回的所有MemberInfo.
完整代码如下:
static void Main(string[] args)
{
string v4AssemblyPath = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll";
string v2AssemblyPath = @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll";
//Assembly v4Assembly = typeof(object).Assembly;
Assembly v4Assembly = Assembly.LoadFile(v4AssemblyPath);
Assembly v2Assembly = Assembly.LoadFile(v2AssemblyPath);
Type[] v4Types = v4Assembly.GetTypes();
Type[] v2Types = v2Assembly.GetTypes();
foreach (Type v2Type in v2Types)
{
Type v4Type = v4Types.First(t => t.FullName == v2Type.FullName);
MemberInfo[] v2Mis = v2Type.GetMethods();
MemberInfo[] v4Mis = v4Type.GetMethods();
if (v2Mis.Length != v4Mis.Length)
{
foreach (MemberInfo v2Mi in v2Mis)
{
bool isExist = false;
foreach (MemberInfo v4Mi in v4Mis)
{
if (v2Mi.Name == v4Mi.Name)
{
isExist = true;
break;
}
}
if (!isExist)
{
Console.WriteLine("{0}:{1}", v2Type.FullName, v2Mi.Name);
}
}
}
}
Console.WriteLine("程序执行完毕!");
Console.ReadLine();
}
程序运行结果如下:
0
投稿
猜你喜欢
- SpringBoot项目中新增脱敏功能项目背景目前正在开发一个SpringBoot项目,此项目有Web端和微信小程序端。web端提供给工作人
- 查看JDK1.8 ArrayList的源代码1、默认初始容量为10 /** * Default i
- 介绍该系统有三个角色,分别是:普通用户、房屋中介、管理员。普通用户的功能:浏览房屋信息、预约看房、和中介聊天、申请成为中介等等。房屋中介的功
- 享元模式概述享元模式(Flyweight Pattern)又称为轻量级模式,是对象池的一种实现。属于结构型模式。类似于线程池,线程池可以避免
- 本文实例讲述了java实现将结果集封装到List中的方法。分享给大家供大家参考,具体如下:import java.sql.Connectio
- 功能函数// 图像旋转void Rotate(const cv::Mat &srcImage, cv::Mat &dstIm
- 一、模糊查询的几种实现方式1.concat函数和#{}拼接的方式student_name like concat('%',#
- 在页面提交到tomcat乱码 解决方法是在tomcat/conf/server.xml中进行配置以tomcat6.0.32为例,需将以下代码
- 在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>、DataTa
- 1.申请测试号,并记录appID和appsecret2.关注测试号3.添加消息模板{{topic.DATA}} 用户名: {{user.DA
- 前言很多时候,当你以为掌握了事实真相的时间,如果你能再深入一点,你可能会发现另外一些真相。比如面向切面编程的最佳编程实践是AOP,AOP的主
- 先来一个常见的错误信息:Due to limitations of the com.mongodb.BasicDocument, you c
- 目录前言反射基础数据准备基于反射创建对象获取反射中的对象获取类中属性获取类中的构造方法获取类中方法结语前言大家好,瑞雪后的第一天,每个周一的
- 分页问题是一个非常普遍的问题,开发者几乎都会遇到,这里不讨论具体如何分页,说明一下Web方式下分页的原理。首先是查询获得一个结果集(表现为查
- 一、MyBatis的逆向⼯程(1)所谓的逆向⼯程是:根据数据库表逆向⽣成Java的pojo类,SqlMapper.xml⽂件,以及Mappe
- ##创建测试类 新建Java工程创建测试类如下代码:(创建文件验证定时器是否执行)package makeFile;import java.
- 2.4.6 BoxLayout为了简化开发,Swing 引入了 一个新的布局管理器 : BoxLayout 。 BoxLayout 可以在垂
- 示例 1 :使用搜索表单创建全屏模式我们要构建的小应用程序有一个应用程序栏,右侧有一个搜索按钮。按下此按钮时,将出现一个全屏模式对话框。它不
- Profile多环境配置我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、red
- 概述Spring boot 中的 @Conditional 注解是一个不太常用到的注解,但确实非常的有用,我们知道 Spring Boot