CSDN博客

img lucentoff

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

发表于2004/7/9 12:11:00  5697人阅读

分类: .Net

作者: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中,界面或操作稍有不同]

 

0 0

相关博文

我的热门文章

img
取 消
img