Я новичок во всех анонимных функциях и нуждаюсь в некоторой помощи. Я получил следующие работы:Преобразование этого делегата в анонимный метод или лямбда
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», потому что это не тип делегата ** ошибки компиляции ,
Что я делаю неправильно?
Из-за того, что писал Марк Ingram, кажется, лучший ответ, хотя никто не прямо сказал это, чтобы сделать это:
public delegate void FakeSave(Transaction t);
Expect.Call(delegate { _dao.Save(t); }).Do(new FakeSave(delegate(Transaction t2) { t.Message = expected_msg; }));
Хорошей связи, но я до сих пор не понимаю, почему * * компилятор не бросьте автомагически (как это делает с синтаксисом лямбды) – 2010-12-22 21:12:00
Ссылка не работает. – 2011-04-07 20:54:33