IL应用之——用IL分析接口的本质
IL反編譯利器——Ildasm.exe和Reflector.exe:
?
一:Ildasm.exe簡介
? ? ? 這一微軟VS自帶工具,在上一篇博文《初識Ildasm.exe——IL反編譯的實用工具》中已經做了詳細介紹,這里不再鰲述;
?
二:Reflector.exe簡介
? ?? 至此(10.02.03),從 http://www.aisto.com/roeder/dotnet 下載的最新版本為Latest version: 5.1.6.0 ,這里還以上篇中經典的"Hello World."示例演示,當用Reflector.ext打開可執行文件時,主界面如下:
?
?
可見Reflect.exe的功能要強于Ildasm.exe,它可以反編譯IL、C#、Visual Basic、Delphi、MC++、甚至是Chrome,而且它的界面更加友好,所以他被冠稱為深入IL的最佳利器!
我們先看它所反編譯的IL代碼是何模樣?是否同于Ildasm.exe的效果?圖示如下:
?
?
比較之后,可得Reflector.exe具有更容易理解的界面(沒有Ildasm.exe中眾多的標識符,見上篇博文的MSDN幫助圖) 。
當然,之所以稱 Reflector.exe為深入IL的最佳利器,是因為它可以反編譯IL語言,以及C#語言!這樣我們:可以在完全沒有源代碼的情況下研究所使用的程序集!!!示例圖見上上圖,所示,我們發現果然編譯為了源代碼,且完全正確,這太令人驚訝了,而它的作用必定是意義深遠的!
?
用IL揭示接口的本質:
?
一:接口本質
? ? 我們先看一個普通的接口定義:如圖示:
而用Reflector.exe反編譯的IL代碼為:
?
可見接口實質上 ,被編譯為抽象類,其中接口中的方法,被編譯為抽象方法(abstract virtual),沒有實現體。
?
二:接口的抽象實現原理
先來看最基本的類繼承接口的示例,如下圖:
?
而其對應的IL代碼,用Reflector.exe編譯為:
?
這樣可以看到該類中,對應接口的函數,在這里實現了"覆蓋"——Override!因此接口的抽象機制,采用多態來實現的!
?
綜述之,通過對Reflect.exe的實例應用,了解了更多的IL反編譯工具。同時通過IL代碼,實現了對接口本質的揭示,認識到其在保持接口特有性(這里不鋪開論述。)的基礎上, 用抽象類的實現機制及其多態性實現抽象的。
?
轉載于:https://www.cnblogs.com/yangmingming/archive/2010/02/03/1662546.html
總結
以上是生活随笔為你收集整理的IL应用之——用IL分析接口的本质的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++编写植物大战僵尸
- 下一篇: 计算机网络第七版和课后答案百度网盘下载