1

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

4

1 回答 1

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)));
于 2016-06-11T11:37:54.457 回答