이 대리자를 변환합니다. 나는하려면 다음을 입수했습니다 :내가 모든 익명의 기능에 새로운 오전 도움이 필요 익명 메서드 또는 람다
public void FakeSaveWithMessage(Transaction t)
{
t.Message = "I drink goats blood";
}
public delegate void FakeSave(Transaction t);
public void SampleTestFunction()
{
Expect.Call(delegate { _dao.Save(t); }).Do(new FakeSave(FakeSaveWithMessage));
}
을하지만이 완전히 못생긴이고 나는 가능한 경우 익명 메소드 또는 람다 될 수있는 마십시오의 내부를하고 싶습니다.
Expect.Call(delegate { _dao.Save(t); }).Do(delegate(Transaction t2) { t2.Message = "I drink goats blood"; });
및
Expect.Call(delegate { _dao.Save(t); }).Do(delegate { t.Message = "I drink goats blood"; });
을하지만이 나에게
그것이 대리자 형식이 아니기 때문에 'System.Delegate'를 입력하는 익명 메소드를 변환 할 수 없습니다 ** 컴파일 오류를 준다 : 나는 시도 . 내가 잘못 뭐하는 거지
? 때문에 마크 잉그램은 무엇을 게시의
, 아무도 명시 적으로 말했다 비록,이 작업을 수행하는 것입니다, 최선의 대답처럼 보인다 :
public delegate void FakeSave(Transaction t);
Expect.Call(delegate { _dao.Save(t); }).Do(new FakeSave(delegate(Transaction t2) { t.Message = expected_msg; }));
좋은 링크를하지만 (이 람다 구문을 사용하는 것처럼) 난 아직도 왜 * 컴파일러가 자동적으로 캐스팅하지 않습니다 * 이해가 안 돼요 –
링크가 끊어졌습니다. –
아직도 나를 위해 일하고 있습니까? –