日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IL应用之——用IL分析接口的本质

發布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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分析接口的本质的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。