假设我有一个基类和继承类。
它描述了一些过滤逻辑,例如如下所示:
public class BaseClass
{
public String SystemName { get; set; }
public String UserName { get; set; }
}
internal class InheritedClass : BaseClass
{
public Guid Id { get; set; }
}
我的模块从外部接收到了一些基类的表达式(但该继承类在这里是不可见的)。
Expression<Func<BaseClass, bool>>
它描述了一些过滤逻辑,例如如下所示:
Expression<Func<BaseClass, bool>> filter = x => x.SystemName.StartsWith("ABC") && x.UserName != ""
但是在我的模块内部,我需要使用
Expression<Func<InheritedClass, bool>>
因为我将这个过滤器应用到了IQueryable上,就像这样
IQueryable<InheritedClass> filteredItems = Items.Where(filter);
派生类具有基类的所有属性 - 因此,我的经验不太丰富的头脑认为转换是可能的 :)
是否有将传递的表达式转换为我所需要的方式?
谢谢。