Tengo dos árboles de expresión definidos como esto:Pasando un árbol de expresión como un parámetro a otro árbol de expresión
private Expression<Func<TEntity, TPropertyResult>> PropertyAccessor { get; set; }
y
private Expression<Func<TPropertyResult, bool>> TestExpression { get; set; }
Necesito crear un nuevo árbol de expresión que dará lugar a el equivalente de:
var expression = p => this.TestExpression(this.PropertyAccessor(p));
al utilizar Expression.Invoke(this.TestExpression, this.PropertyAccessor)
, me sale el siguiente error
{"Expression of type 'System.Func`2[MyEntity,System.String]' cannot be used for parameter of type 'System.String'"}
TPropertyResult
es una cadena durante mi prueba.
Intenté usar Expression.Call
o Expression.Invoke
. Sin suerte. ¿Qué debería usar?
¿Cuál fue el error del compilador? Además, el código no es tan legible. ¿Estás seguro de que las cosas de .Net 2.0 no son suficientes para lo que quieres lograr? –
Al usar Invoke, dice: '{" Expresión de tipo 'System.Func'2 [MyEntity, System.String]' no se puede utilizar para el parámetro de tipo 'System.String' "}'. Ahí es cuando trato de especificar una cadena como 'TPropertyResult', pero el problema no está limitado a una cadena. –