首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在类字段中存储Expression<Func<T、object>>?

在类字段中存储Expression<Func<T, object>>可以通过以下步骤实现:

  1. 首先,确保你的类字段的类型是Expression<Func<T, object>>。这个类型表示一个表达式树,它可以在运行时表示一个Lambda表达式,该表达式接受一个类型为T的参数并返回一个object类型的结果。
  2. 创建一个类字段,类型为Expression<Func<T, object>>。例如,你可以声明一个名为expressionField的字段:
代码语言:txt
复制
private Expression<Func<T, object>> expressionField;
  1. 在需要存储表达式的地方,将表达式赋值给类字段。例如,你可以使用Lambda表达式来创建一个表达式树,并将其赋值给expressionField:
代码语言:txt
复制
expressionField = x => x.PropertyName;

这里的PropertyName是T类型的一个属性。

  1. 如果需要访问存储的表达式,可以直接使用类字段。例如,你可以在需要使用表达式的地方调用expressionField:
代码语言:txt
复制
var result = expressionField.Compile()(instanceOfT);

这里的instanceOfT是T类型的一个实例,result是表达式的计算结果。

总结起来,存储Expression<Func<T, object>>类型的表达式可以通过声明一个类字段,并将表达式赋值给该字段来实现。然后,可以在需要的时候使用该字段来访问表达式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 让我们一起写出更有效的CSharp代码吧,少年们!

    addFunc){ return addFunc(right, left); } 不要在基和接口上创建具体化的泛型类型 尽可能使的基和接口的适用范围更加的广阔 推荐使用泛型方法,除非类型参数是实例字段...>替代Func 这部分很有意思,当然理解难度也不小,毕竟Expression完全可以实现一个简单的编译器了,真心强大。...我们所使用的LINQ完全是建立在其上的,这儿只做个很粗略的学习,作为未来加强学习的引子,可以看到,Expression表达式树是Func的抽象 Expression> IsOdd..., callLeft, callRight); Expression> typeCombined = Expression.Lamda>( Combined)...这是需要注意的是,工具生成和扩展(一般来说名相同,但文件名加上Ext并放入对应层次文件夹)的设计,需要仔细考虑默认构造方法、属性值设置器、事件处理器等成员的构建。

    1K50

    通俗版《把事件当作对象进行传递》看不懂老赵的文章的朋友进

    m_removeMethod;         public Event(Expression> eventExpr)         {             //eventExpr...null : Expression.Lambda>(memberExpr.Expression).Compile()();             //指定控制绑定和由反射执行的成员和类型搜索方法的标志...(Expression> eventExpr)         {             return new Event(eventExpr);         }     ...Expression 提供一种基,表示表达式目录树节点的派生自该基。它还包含用来创建各种节点类型的 static工厂方法。这是一个 abstract 。...继承自Expression MemberExpression.Expression 属性 获取字段或属性包含对象的Expression MethodInfo 发现方法的属性并提供对方法元数据的访问

    28240

    c#表达式树入门,看这个就够了

    加/减/乘/除/等于/获取字段值/获取属性值/调用方法/new对象 Expression.Property()获取某对象字段的值 test.M Expression.Assign(), 给对象属性或字段赋值...For循环等等,这个入门后 自己查资料即可 Expression.Convert(),强制性转换 Expression.Convert()配合Call 返回值 返回值 其实就是2个: 无返回 值即...可执行的代码块{}, 返回一个值 new对象,入参的对象,常量值,或者 List数组 Expression.Block() Expression.MemberInit() Expression.ListInit...static Dictionary dicFunc = new Dictionary(); /// 没有判断泛型...IsGenericType /// 没操作 属性 不同类型 转不同类型的操作(重新调用Map即可), ps => IEnumerable 转换需要调用 Expression.Call

    11410
    领券