欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在Framework 4.0中:找出新增的方法与新增的类(一)

程序员文章站 2023-12-16 23:36:16
程序思路:动态加载v4和v2的mscorlib.dll程序集,通过反射进行比较。之所以加载mscorlib.dll 是因为framework中的大部分类都在这里,而发生变更...
程序思路:动态加载v4和v2的mscorlib.dll程序集,通过反射进行比较。
之所以加载mscorlib.dll 是因为framework中的大部分类都在这里,而发生变更的也就是这里最多。

第一步:新建控制台程序:

加载程序集:

在Framework 4.0中:找出新增的方法与新增的类(一)

加载程序集完成后,自然要获取程序集中的所有type,这里直接使用默认的gettypes方法。

在Framework 4.0中:找出新增的方法与新增的类(一)

获取了v4types v2types之后,就要对v2types里面的所有typev4types里面的所有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();
}


程序运行结果如下:

在Framework 4.0中:找出新增的方法与新增的类(一)

上一篇:

下一篇: