创建返回对象的表达式
本文关键字:表达式 对象 返回 创建 | 更新日期: 2023-09-27 17:56:32
我有这个方法:
public R TranslateExpression<R>(Expression exp)
where R : DbRequest
{
//...
}
在另一个类中,我有以下方法:
public void Persist(E entity)
{
Expression expr = Expression.Return(entity); //Does not compile, but I'm looking for something like this
PersistRequest request = TranslateExpression<PersistRequest>(expr);
}
如何创建仅返回实例的Expression
?
像这样的东西:() => { return entity; }
.
您可以
创建一个Expression<Func<E>>
,然后在调用表达式后使用 lambda 表达式返回您的实体。
public void Persist<E>(E entity)
{
Expression<Func<E>> expr = () => entity;
PersistRequest request = TranslateExpression<PersistRequest>(expr);
}
public R TranslateExpression<R>(Expression exp)
where R : DbRequest
{
}
但是,此时TranslateExpression
方法并不是特别有用,因为您已经失去了表达式的功能。 除非您在 TranslateExpression
内部做一些特别的事情,否则它可能更适合以下签名:
public R TranslateExpression<R, E>(Expression<Func<E>> exp)
where R : DbRequest
{
}