繁体   English   中英

转换表达式 <Func<TEntity,TKey> 表达 <Func<TEntity, Object> &gt;

[英]Convert Expression<Func<TEntity,TKey> to Expression<Func<TEntity, Object>>

我正在寻找将Expression<Func<TEntity,TKey>Expression<Func<TEntity, Object>>

由于一切都是对象,因此我尝试了如下隐式转换:

var propertyMetadata = 
    new PropertyMetadata<TEntity>((Expression<Func<TEntity, object>>)expression);

但是,这会产生一个错误:

无法将类型Expression<Func<TEntity,TKey>Expression<Func<TEntity, Object>>

有没有一种简单的方法可以在这两种类型之间进行转换

我写了一个简单的扩展方法来做到这一点,不久之后我就想到了一种更简单的方法

public static Expression<Func<TInput, object>> ToObjectExpression<TInput, TOutput>
                                       (this Expression<Func<TInput, TOutput>> expression)
{
    Expression converted = Expression.Convert(expression.Body, typeof(object));
    return Expression.Lambda<Func<TInput, object>>(converted, expression.Parameters);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM