会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
ccddnet
本博主要为博主备忘录,不提供教学,文章均为原创,谢绝转载
博客园
首页
新随笔
联系
订阅
管理
1
2
下一页
2021年3月15日
.Net RuntimeExplorer开发日志(十一) IL to C# - yield
摘要: 首先是删除了对LINQ的特殊支持,因为LINQ与普通的扩展方法没有什么不同,并将lambda的功能扩展到支持所有方法的参数中。同时有发现了一个lambda的变形,它将方法的局部参数变为内联类型的字段,然后在构造lambda时直接用内联类型的方法代替匿名方法,例如List.RemoveAll(),对策
阅读全文
posted @ 2021-03-15 10:01 ccddnet
阅读(89)
评论(1)
推荐(1)
2021年1月20日
.Net RuntimeExplorer开发日志(十) IL to C# - dynamic
摘要: C#博大精深的语法糖已经让我不寒而栗了,后面不知还有多少个新语法糖在等着。目前,解析的基本工作虽已完善,但因是靠特征来解析,而参考目标是VS的生成器,所以还会有大量未知的情况会造成解析错误,这只能靠时间来解决。 先详细说说dynamic的解析原理。System.Runtime.CompilerSer
阅读全文
posted @ 2021-01-20 13:07 ccddnet
阅读(114)
评论(0)
推荐(0)
2020年12月31日
.Net RuntimeExplorer开发日志(九) IL to C# - LINQ与其它语法糖符号
摘要: 解析LINQ前,还需要解决一个障碍,那就是??这个符号,这是语法糖之一,它表示如果一个对象为null时就会使用??后面的值,而且它会频繁出现在LINQ语句中,不信你可以用reflector测试看看。在这里我自定义了两个新的IL代码ternay和ifobjnullldotherelseldnull,前
阅读全文
posted @ 2020-12-31 03:23 ccddnet
阅读(132)
评论(0)
推荐(0)
2020年12月2日
.Net RuntimeExplorer开发日志(八) IL to C# - 异常、泛型约束与其它补完
摘要: 约束指的是泛型类型约束,就是where关键字。作为非科班出身的我来说,逆变协变这个东西真是头一次听说,看了下介绍才明白,以前打过交道,只是当时不知其名而已,又花了些时间,才搞懂如何反射它。类类型的里有个属性名为GenericParameterAttributes,看这个名字就知道了吧,但此属性有个前
阅读全文
posted @ 2020-12-02 15:42 ccddnet
阅读(103)
评论(0)
推荐(0)
2020年11月18日
.Net RuntimeExplorer开发日志(七) IL to C# - 操作符重载与三目运算符
摘要: 操作符与优先级是密不可分的,想想小学时的四则混合运算,如果想改变从左到右的优先级就需要加上括号,这一点实现起来并不难。在定义符号时预先定义其优先级,在符号拼接操作数时就可以与操作数的优先级(最后一个符号的优先级)相比较,如果需要则先拼接括号再拼接符号。 然而语法糖让操作符变得复杂了。+=、-=等等这
阅读全文
posted @ 2020-11-18 19:11 ccddnet
阅读(170)
评论(0)
推荐(0)
2020年10月13日
.Net RuntimeExplorer开发日志(六) IL to C# - 重来
摘要: 曾有朋友问我为什么不使用现成的框架做流水工,我说那太没劲,抄来抄去的没有成就感,可实际情况是无桥可走,无处可抄,找不着能参考的代码,只能自己摸石头过河。就是这样一点一点的,时至今日已经一年多了,这个“软件”还处在遥遥无期的状态,如果有雇主的话,一定早就把我开除了吧。显然,造成现在局面的主要原因是我过
阅读全文
posted @ 2020-10-13 03:36 ccddnet
阅读(115)
评论(0)
推荐(0)
2020年8月21日
.Net RuntimeExplorer开发日志(五) IL to C# - 解析语法糖
摘要: 最近诸事不顺,父母需要照顾,自己也病了一阵,时间太散了,没法静下心来思考,所以搁置了两个多月。言归正传,试着生成了一个debug版本,结果呵呵,大量的数组下标越界和空引用问题,显示出来的也驴唇不对马嘴,不过比较庆幸是对PE头和.net表及资源的解析没有大问题,只在格式上略有不足而已。 语法糖这个东西
阅读全文
posted @ 2020-08-21 00:58 ccddnet
阅读(166)
评论(0)
推荐(0)
2020年6月27日
.Net RuntimeExplorer开发日志(四) IL to C# - 生成基本表达式
摘要: 通过前文已经将IL代码分割成各种语句块,剩下的就是要把表达式语句实现了。这里需要对表达式充分的理解一下,每句IL代码都是有Opcode和Operand的,这些个Operand将会出现在表达式中,而Opcode则是表达式中的运算符,每个Operand之间都必须存在运算符。在C#中运算符一共有15级,所
阅读全文
posted @ 2020-06-27 23:18 ccddnet
阅读(148)
评论(0)
推荐(0)
2020年6月12日
BAML资源的解析笔记
摘要: 前不久,一位爱好汉化的朋友联系到我,他对自己有了些略高的要求,不止是汉化,还希望有更多……在我看来这种行为是有违道德的,但还是盛情难却,正好研究一下,然后集成进我的.Net RuntimeExplorer中。 BAML是XAML的二进制版本,没有明确的资料说明其格式,不过它并不神秘,使用reflec
阅读全文
posted @ 2020-06-12 22:03 ccddnet
阅读(2091)
评论(0)
推荐(1)
2020年5月6日
.Net RuntimeExplorer开发日志(三) IL to C# - 解析switch语句(3)
摘要: 本来已经结束这个话题,但在测试程序时又发现问题,只得改了又改。大体情况是这样,当if或while块中只有switch或多个if组成的switch时,switch块的出口位置变为if else块之后的位置或是while的continue位置,为什么会是这样?因为要效率,所以要免去了多余的跳转。 问题已
阅读全文
posted @ 2020-05-06 23:58 ccddnet
阅读(157)
评论(0)
推荐(0)
1
2
下一页
公告