在我的界面中,我定义了以下内容
List<IFoo> GetListOfFoo<T>(Expression<Func<T, bool>> predicate) where T : IFoo;
在我的实现中,我会将表达式转换为特定类型:
if (typeof(T) == typeof(Foo))
{
Expression converted = Expression.Convert(predicate.Body, typeof(Foo));
Expression<Func<Foo, bool>> newPredicate =
Expression.Lambda<Func<Foo, bool>>(converted, predicate.Parameters);
}
我尝试像这样使用我的实现:
Expression<Func<Foo, bool>> predicate = c => c.Name == "Myname";
_repository.GetListOfFoo<Foo>(predicate);
我没有得到任何编译错误,但是如果我使用它,我会得到一个异常,在 ExpressionBody 中是定义的 bool 参数。
我的问题在哪里?