私のインターフェースでは、次のように定義しています
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 引数が定義されているという例外が発生します。
私の問題はどこですか?