• 十个必备的.NET开发小工具(6):.NET Reflector


    作者:James Avery 翻译:lucentoff

    出处:http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/default.aspx

    声明:版权属原作者所有,转载请注明出处!


     

    .NET Reflector

     

    .NET Reflector是一个类浏览器和反编译器,它能够检查程序集并显示其所有信息。.NET Framework 引入了反射的概念,利用反射可以检查任何基于.NET的代码,无论是单个的类还是完整的程序集。反射还可用于检索特定程序集中有关各种类、方法和属性的信息。使用.NET Reflector可以浏览程序集的类和方法,可以检查这些类和方法生成的微软中间语言(MSIL),可以反编译类和方法,还可以查看等效的C# Visual Basic? .NET代码。

     

    为了加以说明,我把前面的NUnitExample程序集加载到.NET Reflector中进行查看,如图7 所示。

     

     

    7 利用.NET Reflecto查看NUnitExample程序集

     

    .NET Reflector带有多种工具,你可以进一步检查这个程序集。如果要查看组成方法的MSIL,可以右键点击方法,然后从弹出菜单选择“Disassembler”。

     

    除了查看MSIL,你还可以通过选择工具菜单下的Decompiler查看方法的C#代码。也可以通过选择语言菜单查看方法反编译后的Visual Basic .NETDelphi代码。下面就是NET Reflector产生的C#代码:

     

    public void HashtableAddTest()
    { 
        Hashtable hashtable1;
        hashtable1 = new Hashtable();
        hashtable1.Add("Key1", "Value1");
        hashtable1.Add("Key2", "Value2");
        Assert.AreEqual("Value1", hashtable1["Key1"], 
           "Wrong object returned!");
        Assert.AreEqual("Value2", hashtable1["Key2"],
           "Wrong object returned!");
    }

     

    以上代码和我编写的实际代码非常像,下面是实际代码:

     

    public void HashtableAddTest()
    {
        Hashtable ht = new Hashtable();
                
        ht.Add("Key1", "Value1");
        ht.Add("Key2", "Value2");
     
        Assert.AreEqual("Value1", ht["Key1"],
            "Wrong object returned!");
        Assert.AreEqual("Value2", ht["Key2"],
            "Wrong object returned!");
    }

     

    尽管二者有点差别,但功能性相同。

     

    虽然用这个例子展示对比实际代码与反编译代码是个好方法,但我认为.NET Reflector最有用之处是利用它检查.NET Framework程序集和方法。.NET Framework 提供很多途径来执行类似的操作。例如,如果要从XML读数据集,可以使用XmlDocumentXpathNavigatorXmlReader等各种不同方法。使用.NET Reflector,你可以查看Microsoft公司怎样编写DataSetReadXml方法,或如何从配置文件读取数据。.NET Reflector对于查看HttpHandlerconfiguration handler等对象的创建也是一个很好的途径,因为你可以看看Microsoft开发组在.NET Framework中是如何实际构建这些对象的。

     

    .NET ReflectorLutz Roeder编写,下载网址:http://www.aisto.com/roeder/dotnet

     

    [译注:在新版本4.0.10.0中,界面或操作稍有不同]

  • 相关阅读:
    Android成长之路-LayoutInflater和inflate的用法
    Android成长之路-实现简单动画
    Android成长之路-编码实现软件界面
    Android成长之路-手势库的创建
    Android成长之路-手势识别的实现
    Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面
    android中文字中间有超链接的实现方法
    Arduino可穿戴教程ArduinoIDE新建编辑源文件
    FMDB使用SQLite事务Save Point
    FMDB使用Cached Statement功能
  • 原文地址:https://www.cnblogs.com/luoyaoquan/p/2047660.html
Copyright © 2020-2023  润新知