c# FsCheck 无法转换 lambda 表达式

c# FsCheck cannot convert lambda expression

我正在尝试使用 C# FsCheck 生成器来生成系列 用随机字符串初始化的命令。我想出了 以下解决方案:

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。非常感谢任何解决此问题的建议。

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

您可能需要这样的东西:

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