下載地址:IL_Mapper2_exe.zip
簡介
此工具可以直接把C#代碼轉換成IL代碼查看,省去編譯和手動操作ildsam的繁瑣。希望能對想研究IL的各位有所幫助。
效果圖:
后話
如果需要在Vs環境中查看IL代碼, 可以選擇使用VS插件,如:點擊。
還有其它一些產品也不錯,如評論中@KOFIP推薦的Reflector插件和基於Mono的IL Spy(這個程序的圖標就是從IL Spy中Copy過來的)。
使用此工具也有一定的優點,那就是代碼在自己手上,可以自行擴展:如增加代碼保存和查看功能,以管理個人重要的代碼片段。
編碼小記
源碼中比較有意思的問題是”如何讓Avalon.TextEditor的Text實現雙向綁定"。昨天參照了stackoverflow上一帖子,完全沒用。沒有辦法,只好自己仔細研究。過程不多說,結論如下:
1 只有依賴屬性才能加入綁定。
2 依賴屬性的值存放在“別處”,不在”依賴對象“中。值通過GetValue和SetValue訪問。
3 綁定表達式執行時,調用SetValue對依賴屬性(TextProperty)進行賦值,而不是調用Text的Set方法。
4 SetValue會更新依賴屬性的值,再調用OnPropertyChange,通知屬性變更。此時如果有雙向綁定,會由此通知數據源更新值,如更新Controller中的Code屬性。示例中在TextEditor的TextChanged事件中,使用此方法同步Editor的base.Text值到依賴屬性。
5 PropertyMetadata(callback)中,callback為SetValue的回調方法,執行依賴屬性值改變后的后續動作。示例中用於同步依賴屬性Text的值到base.Text中。