[網摘].NET 程式員十種必備工具-Reflector

來源:互聯網
上載者:User
.NET Reflector

下一個必不可少的工具稱為 .NET Reflector,它是一個類瀏覽器和反編譯器,可以剖析器集並向您展示它的所有秘密。.NET 架構向全世界引入了可用來分析任何基於 .NET 的代碼(無論它是單個類還是完整的程式集)的反射概念。反射還可以用來檢索有關特定程式集中包含的各種類、方法和屬性的資訊。使用 .NET Reflector,您可以瀏覽程式集的類和方法,可以分析由這些類和方法產生的 Microsoft 中繼語言 (MSIL),並且可以反編譯這些類和方法並查看 C# 或 Visual Basic ?.NET 中的等價類別和方法。

為了示範 .NET Reflector 的工作方式,我將載入和分析前面已經顯示的 NUnitExample 程式集。顯示了 .NET Reflector 中載入的該程式集。

在 .NET Reflector 內部,有各種可用來進一步分析該程式集的工具。要查看構成某個方法的 MSIL,請單擊該方法並從菜單中選擇 Disassembler。

除 了能夠查看 MSIL 以外,您還可以通過選擇 Tools 菜單下的 Decompiler 來查看該方法的 C# 形式。通過在 Languages 菜單下更改您的選擇,您還可以查看該方法被反編譯到 Visual Basic .NET 或 Delphi 以後的形式。以下為 .NET Reflector 產生的程式碼:

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 架構程式集和方法。.NET 架構提供了許多執行類似操作的不同方法。例如,如果您需要從 XML 中讀取一組資料,則存在多種使用 XmlDocument、XPathNavigator 或 XmlReader 完成該工作的不同方法。通過使用 .NET Reflector,您可以查看 Microsoft 在編寫資料集的 ReadXml 方法時使用了什麼,或者查看他們在從設定檔讀取資料時做了哪些工作。.NET Reflector 還是一個瞭解以下最佳實施策略的優秀方法:建立諸如 HttpHandlers 或配置處理常式之類的對象,因為您可以瞭解到 Microsoft 工作群組實際上是如何在架構中產生這些對象的。

.NET Reflector 由 Lutz Roeder 編寫,並且可以從 http://www.aisto.com/roeder/dotnet 下載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.