c#FsCheck无法转换lambda表达式
问题描述:
我试图让一个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.Linq和System.Data.Entity。任何解决这个问题的建议都非常感谢。
答
您正在试图将(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)));