Converta esse delegado para um método anônimo ou lambda
Sou novo em todos os recursos anônimos e preciso de ajuda. Consegui o seguinte para trabalhar:
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));
}
Mas isso é totalmente feio e eu gostaria que o interior do Do fosse um método anônimo ou até mesmo um lambda, se possível. Eu tentei
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"; });
mas estes me dão
ão é possível converter o método anônimo para o tipo 'System.Delegate' porque não é um tipo de delegado ** erros de compilaçã
O que estou fazendo errado
Por causa do que Mark Ingram postou, parece ser a melhor resposta, embora ninguém tenha dito isso explicitamente, é fazer o seguinte:
public delegate void FakeSave(Transaction t);
Expect.Call(delegate { _dao.Save(t); }).Do( new FakeSave(delegate(Transaction t2) { t.Message = expected_msg; }));