您的位置:首页 > 其它

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

2004-07-13 10:53 375 查看
作者:JamesAvery翻译:lucentoff出处:http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/default.aspx声明:版权属原作者所有,转载请注明出处![align=left][/align][align=left][/align].NETReflector.NETReflector是一个类浏览器和反编译器,它能够检查程序集并显示其所有信息。.NETFramework引入了反射的概念,利用反射可以检查任何基于.NET的代码,无论是单个的类还是完整的程序集。反射还可用于检索特定程序集中有关各种类、方法和属性的信息。使用.NETReflector可以浏览程序集的类和方法,可以检查这些类和方法生成的微软中间语言(MSIL),可以反编译类和方法,还可以查看等效的C#或VisualBasic?.NET代码。为了加以说明,我把前面的NUnitExample程序集加载到.NETReflector中进行查看,如图7所示。

图7利用.NETReflecto查看NUnitExample程序集.NETReflector带有多种工具,你可以进一步检查这个程序集。如果要查看组成方法的MSIL,可以右键点击方法,然后从弹出菜单选择“Disassembler”。除了查看MSIL,你还可以通过选择工具菜单下的Decompiler查看方法的C#代码。也可以通过选择语言菜单查看方法反编译后的VisualBasic.NET或Delphi代码。下面就是NETReflector产生的C#代码:
publicvoidHashtableAddTest()
{
Hashtablehashtable1;
hashtable1=newHashtable();
hashtable1.Add("Key1","Value1");
hashtable1.Add("Key2","Value2");
Assert.AreEqual("Value1",hashtable1["Key1"],
"Wrongobjectreturned!");
Assert.AreEqual("Value2",hashtable1["Key2"],
"Wrongobjectreturned!");
}
以上代码和我编写的实际代码非常像,下面是实际代码:
publicvoidHashtableAddTest()
{
Hashtableht=newHashtable();
ht.Add("Key1","Value1");
ht.Add("Key2","Value2");
Assert.AreEqual("Value1",ht["Key1"],
"Wrongobjectreturned!");
Assert.AreEqual("Value2",ht["Key2"],
"Wrongobjectreturned!");
}
尽管二者有点差别,但功能性相同。虽然用这个例子展示对比实际代码与反编译代码是个好方法,但我认为.NETReflector最有用之处是利用它检查.NETFramework程序集和方法。.NETFramework提供很多途径来执行类似的操作。例如,如果要从XML读数据集,可以使用XmlDocument、XpathNavigator或XmlReader等各种不同方法。使用.NETReflector,你可以查看Microsoft公司怎样编写DataSet的ReadXml方法,或如何从配置文件读取数据。.NETReflector对于查看HttpHandler或configurationhandler等对象的创建也是一个很好的途径,因为你可以看看Microsoft开发组在.NETFramework中是如何实际构建这些对象的。.NETReflector由LutzRoeder编写,下载网址:http://www.aisto.com/roeder/dotnet。[译注:在新版本4.0.10.0中,界面或操作稍有不同]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: