2016-06-11 9 views
1

임의의 문자열로 초기화되는 명령 을 생성하기 위해 C# FsCheck 생성기를 얻으려고합니다.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입니다. 이 문제를 해결하기위한 제안 사항을 보내 주시면 대단히 감사하겠습니다.

답변

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))); 
:

당신은 아마 같은 뭔가가 필요