在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();
}
程序运行结果如下:


猜你喜欢
- 在android support.v4 中有一个抽屉视图控件DrawerLayout。使用这个控件,可以生成通过在屏幕上水平滑动打开或者关闭
- 基于比较的排序算法基本原理及Java实现1. 七大基于比较的排序-总览1.1常见基于比较的排序分类1.2时间复杂度,空间复杂度以及稳定性。稳
- 本文实例讲述了C#读取目录下所有指定类型文件的方法。分享给大家供大家参考。具体分析如下:首先要引入命名空间:using System.IO;
- 本文汇总了几个WinForm中常见的实用技巧,对于C#程序开发有着很好的参考借鉴价值。具体分析如下:一、屏蔽窗体右上角关闭按钮1.重写OnC
- 一、信号量(Semaphore)信号量(Semaphore)是由内核对象维护的int变量,当信号量为0时,在信号量上等待的线程会堵塞,信号量
- 内存对齐的基本原则:结构(struct/class)的内置类型数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的起始位置
- 本文实例为大家分享了android自定义View实现五子棋的具体代码,供大家参考,具体内容如下先说一下吧,android的自定义View就是
- 单链表:每个数据是以节点的形式存在的每个节点分为数据域和指针域数据域中保存该节点的数据指针域中保存指向下一个节点的指针实现思路:节点类Sin
- tomcat内存溢出设置JAVA_OPTS答案1设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xm
- 本文将向大家展示如何拍照截图。先看看效果图:拍照截图有点儿特殊,要知道,现在的Android智能手机的摄像头都是几百万的像素,拍出来的图片都
- 一、项目简述功能javaweb 网上商城系统,前台+后台管理,用户注册,登录,上哦展示,分组展示,搜索,收货地址管理,购物车管理,添加,购买
- 目录定义数据库表访问表中的数据插入数据查询数据创建数据库测试 DaoRoom 是 SQLite 的封装,它使 Android 对数据库的操作
- using System;using System.Collections.Generic;using System.Linq; using
- 创建自定义启动器0、项目总览1、创建项目,引入依赖创建项目 spring-boot-jdbc-starter,引入依赖,pom文件如下:&l
- 前言经常使用Swagger的小伙伴应该有所体会,Swagger对于JSON的支持真的很不友好!最近发现了两款颜值很不错的JSON可视化工具,
- Vector(向量)是 java.util 包中的一个类,该类实现了类似动态数组的功能。向量和数组相似,都可以保存一组数据(数据列表)。但是
- 本文实例讲述了Android编程实现Listview点击展开和隐藏的方法。分享给大家供大家参考,具体如下:代码较多,所以找关键点大家贴出来,
- 一、基本概念// 上下文对象 private Context context; public FileService(Context con
- 前言开发中很多需要javac 的程序依赖 JAVA_HOME环境变量.如果是手工下载源码安装的JDK,很容易知道JAVA_HOME的目录.
- SQLite毕竟是在手机上的数据库,开发者想在电脑上看还是比较烦恼,但相信大多数对navicat有所耳闻,我用的navicat 12就觉得数