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))ラムダ式で(Command<A,B>)ある をクラスであるにキャストしようとしています。

おそらく次のようなものが必要です。

var gen3 = gen2.select(s => (Command<A,B>)(new DerivedCommand(s.Item1,s.Item2)));
于 2016-06-11T11:37:54.457 に答える