3
我试图生成Expression<Predicate<T>>
与AutoFixture这种方式创建谓词表达式:与AutoFixture
var fixture = new Fixture();
var predicateExpr = _fixture.Create<Expression<Predicate<string>>>(); // exception
当我运行这段代码,我得到以下异常:
System.InvalidCastException
Unable to cast object of type
'System.Linq.Expressions.Expression`1[System.Func`1[System.String]]'
to type
'System.Linq.Expressions.Expression`1[System.Predicate`1[System.String]]'.
at Ploeh.AutoFixture.SpecimenFactory.Create[T](ISpecimenContext context, T seed)
at Ploeh.AutoFixture.SpecimenFactory.Create[T](ISpecimenContext context)
现在,当我运行类似的东西,但Predicate<T>
取代Func<T>
代码效果很好。
var func = _fixture.Create<Expression<Func<string, bool>>>(); // no exception
而且,一切都很好,如果我尝试创建Predicate<T>
(而不是Expression<Predicate<T>>
)
var predicate = _fixture.Create<Predicate<string>>(); // no exception
我在做什么错在这里?有没有一种方法可以用AutoFixture创建谓词表达式?
如何在没有AutoFixture的情况下创建它? –