2010-11-18 4 views
0

페이지 code.google.com/p/fakeiteasy/에서C# 메서드 매개 변수로 람다 식에 대한 질문

A.CallTo(() => shop.GetTopSellingCandy()).Returns(lollipop); 

그래서 문제는 - 람다 식을 메서드 매개 변수로 전달하는 방법입니까?

+0

um? 뭔가 빠졌을 수도 있습니다 (람다 식은 유효한 out-of-place 'new {}'구문을 처리 할 때를 제외하고 유효한 이름 가능한 정적 유형을가집니다) - 무엇을 시도 했습니까? 힌트 : 대부분의 경우'Func <...> '을 고려하십시오. –

답변

5

이 함수는 Func<T> (일반 매개 변수가있는 일반 대리자) 또는 Expression<Func<T>> (expression tree)의 매개 변수를 사용합니다.

함수 자체에는 전달 된 메서드에서 유추되는 일반 매개 변수가있을 수 있습니다.

표현 트리를 사용하여 함수는 표현식 내부의 코드를 검사하고 그 표현식을 확인합니다.

+0

+1 절대로 실패하지 않습니다 ... 항상 20 초 앞선 것입니다. –

+0

네, 그렇습니다. FakeItEasy는 표현식 트리를 검사하여 메소드가 호출되는 인스턴스와 해당 인스턴스에서 호출되는 메소드 (및 매개 변수)를 가져옵니다. –

2

코드는 람다 식을 매개 변수로 메서드 호출에 전달하는 것과 동일합니다.

0

CallTo의 서명이 'CallTo (Action action)'일 수 있습니다. 따라서 람다는 대표자로 전달됩니다.

관련 문제