Ich bin neu bei allen anonymen Funktionen und brauche etwas Hilfe. Ich habe folgendes bekommen zu arbeiten:Konvertieren Sie diesen Delegaten in eine anonyme Methode oder Lambda
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));
}
Aber das ist total hässlich, und ich möchte das Innere des Do habe eine anonyme Methode oder auch ein Lambda sein, wenn es möglich ist. Ich habe versucht:
Expect.Call(delegate { _dao.Save(t); }).Do(delegate(Transaction t2) { t2.Message = "I drink goats blood"; });
und
Expect.Call(delegate { _dao.Save(t); }).Do(delegate { t.Message = "I drink goats blood"; });
aber diese geben mir
nicht anonyme Methode konvertieren kann ‚System.Delegate‘ zu geben, weil es kein Delegattyp ist ** kompilieren Fehler .
Was mache ich falsch?
Aufgrund dessen, was Mark Ingram geschrieben, scheint die beste Antwort, obwohl niemand explizit gesagt wird, ist, dies zu tun:
public delegate void FakeSave(Transaction t);
Expect.Call(delegate { _dao.Save(t); }).Do(new FakeSave(delegate(Transaction t2) { t.Message = expected_msg; }));
gute Verbindung, aber ich verstehe immer noch nicht, warum * * der Compiler es nicht automatisch gegossen (wie es mit Lambda-Syntax der Fall ist) –
Link ist kaputt. –
Arbeitest du immer noch für mich? –