在Framework 4.0中:找出新增的方法與新增的類(一)
更新時間:2013年05月13日 17:07:59 作者:
經(jīng)常看到有同學在討論Framework 4 的新特性,新方法,于是想寫個程序找出framework4.0中新增的方法和類
程序思路:動態(tài)加載V4和V2的mscorlib.dll程序集,通過反射進行比較。
之所以加載mscorlib.dll 是因為framework中的大部分類都在這里,而發(fā)生變更的也就是這里最多。
第一步:新建控制臺程序:
加載程序集:
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("程序執(zhí)行完畢!");
Console.ReadLine();
}
之所以加載mscorlib.dll 是因為framework中的大部分類都在這里,而發(fā)生變更的也就是這里最多。
第一步:新建控制臺程序:
加載程序集:
加載程序集完成后,自然要獲取程序集中的所有Type,這里直接使用默認的GetTypes方法。
獲取了v4Types 和v2Types之后,就要對v2Types里面的所有Type于v4Types里面的所有Type進行比較,
而比較的內(nèi)容就是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("程序執(zhí)行完畢!");
Console.ReadLine();
}
程序運行結果如下:
相關文章
c# OpenCvSharp實現(xiàn)常見檢測(斑點檢測,輪廓檢測,邊緣檢測)
這篇文章主要為大家詳細介紹了c#如何使用OpenCvSharp實現(xiàn)常見檢測(斑點檢測,輪廓檢測,邊緣檢測),文中的示例代碼講解詳細,需要的小伙伴可以參考下2023-12-12
c#獲取當前年的周數(shù)及當前月的天數(shù)示例代碼
本篇文章主要是對c#獲取當前年的周數(shù)及當前月的天數(shù)示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
C#數(shù)據(jù)結構之順序表(SeqList)實例詳解
這篇文章主要介紹了C#數(shù)據(jù)結構之順序表(SeqList)實現(xiàn)方法,結合實例形式較為詳細的分析了順序表的定義、原理與具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
C#多線程之Thread中Thread.IsAlive屬性用法分析
這篇文章主要介紹了C#多線程之Thread中Thread.IsAlive屬性用法,實例分析了C#判斷線程可用狀態(tài)的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04

