using System.Linq.Expressions;
using AgileObjects.ReadableExpressions;
public class EntityBase { }
public class DerivedEntity : EntityBase
public bool Remove(DerivedEntity derived)
public static void Main()
var parentEntity = Expression.Parameter(typeof(EntityBase), "parentEntity");
var entityExpression = Expression.Parameter(typeof(EntityBase), "entity");
var sourceLambda = Expression.Lambda<Func<EntityBase, EntityBase, bool>>(
Expression.Convert(parentEntity, typeof(DerivedEntity)),
typeof(DerivedEntity).GetMethod("Remove"),
Expression.Convert(parentEntity, typeof(DerivedEntity))),
Console.WriteLine(sourceLambda.ToReadableString());