Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用AutoFixture创建谓词表达式_C#_.net_Predicate_Autofixture - Fatal编程技术网

C# 使用AutoFixture创建谓词表达式

C# 使用AutoFixture创建谓词表达式,c#,.net,predicate,autofixture,C#,.net,Predicate,Autofixture,我试图用AutoFixture以以下方式生成表达式: var fixture = new Fixture(); var predicateExpr = _fixture.Create<Expression<Predicate<string>>>(); // exception 现在,当我运行类似的东西时,但是用Predicate替换为Func时,代码运行得很好 var func = _fixture.Create<Expression<Func&

我试图用AutoFixture以以下方式生成
表达式

var fixture = new Fixture();
var predicateExpr = _fixture.Create<Expression<Predicate<string>>>(); // exception
现在,当我运行类似的东西时,但是用
Predicate
替换为
Func
时,代码运行得很好

var func = _fixture.Create<Expression<Func<string, bool>>>(); // no exception
var func=_fixture.Create();//也不例外
另外,如果我尝试创建
谓词
(而不是
表达式
),一切都很好

var谓词=_fixture.Create();//也不例外

我做错了什么?有没有一种方法可以使用AutoFixture创建谓词表达式?

它看起来像是一个bug或不受支持的用例。您可以通过夹具自定义来解决此问题:

public class PredicateCustomization : ICustomization
{
    public void Customize(IFixture fixture)
    {
        fixture.Register(() => (Expression<Predicate<string>>) (s => true));
    }
}

=====

var fixture = new Fixture();
fixture.Customize(new PredicateCustomization());

var predicateExpr = fixture.Create<Expression<Predicate<string>>>();
公共类谓词自定义:ICustomization
{
公共空间自定义(iTexture装置)
{
寄存器(()=>(表达式)(s=>true));
}
}
=====
var fixture=新fixture();
fixture.Customize(new predictecustomization());
var predicateExpr=fixture.Create();

如果没有AutoFixture,您将如何创建它?
var predicate = _fixture.Create<Predicate<string>>(); // no exception
public class PredicateCustomization : ICustomization
{
    public void Customize(IFixture fixture)
    {
        fixture.Register(() => (Expression<Predicate<string>>) (s => true));
    }
}

=====

var fixture = new Fixture();
fixture.Customize(new PredicateCustomization());

var predicateExpr = fixture.Create<Expression<Predicate<string>>>();