首页 > 代码库 > [工具]IL Mapper2(C# -> IL 转换器)

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

下载地址:IL_Mapper2.zip

源文件: IL_Mapper2_src.zip

 

简介

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

 

效果图

 

编码小记

 源码中比较有意思的问题是”如何让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中。

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