共享一个从字符串转 Lambda 表达式的类(1)
记得在古老的 2.0 时代,如果想要不重新编译动态更改逻辑,有两种方式:第一种是插件式编程,第二种是使用 System.CodeDom.Compiler 空间下的动态编译功能。两种思路的核心思路差不多,都是实现接口,进而创建实例操作的。或许,还有第三种方式,恕我孤陋寡闻。
然而,时代在进步,总会出现一些新的技术替换。在进入 3.0 之后,Lambda 表达式的出现,给我们一些新的思路,我们应该可以将这样的字符串【p => p.FirstName + p.LastName】转换为 Lambda 表达式树或者其编译后的委托,算是第二种方式的一种进阶吧。这恰恰是我在接下来的一系列的文章中,将要展示给大家的东西,希望大家能喜欢。
在这第一篇文章中,我说下思路吧。
- 分析字符串【p => p.FirstName + p.LastName】并转换为一组 symbol 集合。
- 传递目标 LambdaExpression 包含的委托类型到分析类中。
- 根据 LambdaExpression 规则递归分析集合中的每一个 symbol 。
- 返回分析得到的 LambdaExpression 表达式或编译后的委托。
这样,你就可以根据委托这种后绑定的数据形式,做任何你想要的事情了。关于第一种的插件式编程,在完成了这个系列之后,我会共享一个高效、轻量的 DI 类库,和这个系列组合起来,形成一个真正可用的微型框架。在这里先吊吊大家的胃口,希望不要喷我才好。敬礼,呵呵。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2009-05-25 灵活控制SVN服务