gpt4 book ai didi

c# - 普通代码的表达式树

转载 作者:行者123 更新时间:2023-11-30 12:36:40 31 4
gpt4 key购买 nike

如果您这样声明它,就可以创建一个表达式树。

但是是否有可能为普通代码块(例如方法或属性 getter )获取表达式树?

我想做的是,假设对于订单处理系统,我有一个订单项目类:

class Item : Entity
{
[Cascade]
public Document document { get; set; }
public int line { get; set; }

public Product product { get; set; }
public string description { get; set; }
public decimal qty { get; set; }
public decimal price { get; set; }
public decimal net
{
get
{
return qty * price;
}
}
public VatCode vat_code { get; set; }
}

其中净值等于 qty * price,所以我想用属性或方法声明它,然后让框架内省(introspection)该表达式,以便它可以生成适当的 SQL 来定义相应的计算相应数据库 View 中的列。

最明显的方法是获取属性 getter 或方法的表达式树,但我找不到任何指示如何执行此操作,或者说它是可能的。 (我找到了一种将方法主体作为字节流获取的方法,但这不是这里所需要的。)

如果那不可能,我想推荐的解决方案是声明类似于表达式树的静态字段,并在运行时编译/运行它以供内部使用,并像往常一样自省(introspection)以生成 SQL ?

最佳答案

不,不可能 - 普通代码是字节码,没有将其转换为表达式树的机制。你可以做的是使用反射 - 但基本上就是这样。

关于c# - 普通代码的表达式树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816754/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com