Я плохо знаком со всеми анонимными функциями и мне нужна помощь. Я получил следующие результаты:
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));
}
Но это совершенно уродливо, и я хотел бы, чтобы внутри Do был анонимный метод или даже лямбда, если это возможно. Я пытался:
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; }));