[工具]IL Mapper2(C# -> IL 转换器)

时间:2023-06-26 09:21:02

下载地址IL_Mapper2_exe.zip

源文件IL_Mapper2_src.zip

简介

此工具可以直接把C#代码转换成IL代码查看,省去编译和手动操作ildsam的繁琐。希望能对想研究IL的各位有所帮助。

效果图

[工具]IL Mapper2(C# -> IL 转换器)

后话

如果需要在Vs环境中查看IL代码, 可以选择使用VS插件,如:点击

还有其它一些产品也不错,如评论中@KOFIP推荐的Reflector插件和基于Mono的IL Spy(这个程序的图标就是从IL Spy中Copy过来的)。

使用此工具也有一定的优点,那就是代码在自己手上,可以自行扩展:如增加代码保存和查看功能,以管理个人重要的代码片段。

编码小记

源码中比较有意思的问题是”如何让Avalon.TextEditor的Text实现双向绑定"。昨天参照了*上一帖子,完全没用。没有办法,只好自己仔细研究。过程不多说,结论如下:

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中。