C# Expression学习笔记(一、表达式与表达式树的基本结构)
一个美丽的邂逅
昨天心血来潮,想着用了很久的HangFire这个任务调度组件,却从来没有研究过其源码,所以我就想着看一下Hangfire的源码,然后当我看到Hangfire源码中 AspNetShutdownDetector(Asp.Net服务停止检测器)这个类的源码的时候,看到其实现方式中,有两个私有的方法,看起名称是用于创建或者获取某个类中的静态字段和非静态字段的,但是看其实现则是通过表达式树进行反射查找。代码如下:
private static Func<T> CreateGetStaticFieldDelegate<T>(FieldInfo fieldInfo)
{
var fieldExp = Expression.Field(null, fieldInfo);
return Expression.Lambda<Func<T>>(fieldExp).Compile();
}
private static Func<object, T> CreateGetFieldDelegate<T>(FieldInfo fieldInfo, Type type

本文介绍了作者在查看HangFire源码时发现了Expression在反射操作中的应用,激发了对Expression的学习兴趣。文章从概念出发,解释了Expression作为表达式树节点基类的作用,并列举了其派生类。接着,通过示例解析表达式和表达式树的结构,展示了如何在C#中构建和使用表达式树,为后续深入研究打下基础。
最低0.47元/天 解锁文章
1131

被折叠的 条评论
为什么被折叠?



