Estoy empezando con los árboles de expresión, así que espero que tenga sentido. Estoy tratando de crear un árbol de expresión para representar:¿Cómo creo un árbol de expresiones para representar 'String.Contains ("term")' en C#?
t => t.SomeProperty.Contains("stringValue");
Hasta ahora he conseguido:
private static Expression.Lambda<Func<string, bool>> GetContainsExpression<T>(string propertyName, string propertyValue)
{
var parameterExp = Expression.Parameter(typeof(T), "type");
var propertyExp = Expression.Property(parameter, propertyName);
var containsMethodExp = Expression.*SomeMemberReferenceFunction*("Contains", propertyExp) //this is where I got lost, obviously :)
...
return Expression.Lambda<Func<string, bool>>(containsMethodExp, parameterExp); //then something like this
}
Simplemente no sé cómo hacer referencia a los métodos() String.Contains.
Ayuda apreciada.
Qué pasa si quiero llamar no lo hace startWith "substring"? – amd
@AhmD Expression. ¿No está en Expression.Call y cambia GetMethod en StartsWith? –
¡gracias esto qué exactamente qué necesitó! – amd