2016-06-11 73 views
1

我试图让一个C#FsCheck生成器生成一系列命令,它们是用随机字符串初始化的 。我想出了 以下解决方案:c#FsCheck无法转换lambda表达式

public Gen<Command<A,B>> Next(B value) 
{ 
    var gen1 = Arb.Default.String().Generator; 
    var gen2 = Gen.two(gen1); 
    var gen3 = gen2.select((Command<A,B>)(s => new DerivedCommand(s.Item1,s.Item2))) 
    //DerivedCommand extends Command<A,B> 

    return Gen.OneOf(gen3); 
} 

然而,VS不能建立这样的代码:

Cannot convert lambda expression to type Command<A,B> because it is not a delegate type 

...我已经寻找此错误信息的解决方案,但没有我发现帮助。 我正在使用System.LinqSystem.Data.Entity。任何解决这个问题的建议都非常感谢。

回答

1

您正在试图将(s => new DerivedCommand(s.Item1,s.Item2))(这是一个lambda表达式)转换为(Command<A,B>),它(我认为)是一个类。

你可能需要类似:

var gen3 = gen2.select(s => (Command<A,B>)(new DerivedCommand(s.Item1,s.Item2)));