Tôi mới sử dụng tất cả các tính năng ẩn danh và cần trợ giúp. Tôi đã nhận được những điều sau đây để làm việc:Chuyển đổi đại biểu này sang một phương thức ẩn danh hoặc 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));
}
Nhưng điều này hoàn toàn xấu và tôi muốn có bên trong của Do là một phương pháp ẩn danh hoặc thậm chí là lambda nếu có thể. Tôi cố gắng:
Expect.Call(delegate { _dao.Save(t); }).Do(delegate(Transaction t2) { t2.Message = "I drink goats blood"; });
và
Expect.Call(delegate { _dao.Save(t); }).Do(delegate { t.Message = "I drink goats blood"; });
nhưng cho tôi
Không thể chuyển đổi phương pháp vô danh để gõ 'System.Delegate' vì nó không phải là một loại đại biểu ** biên dịch lỗi .
Tôi đang làm gì sai?
Bởi vì những gì Mark Ingram được đăng, có vẻ như câu trả lời tốt nhất, mặc dù không ai nói nó một cách rõ ràng, là để làm điều này:
public delegate void FakeSave(Transaction t);
Expect.Call(delegate { _dao.Save(t); }).Do(new FakeSave(delegate(Transaction t2) { t.Message = expected_msg; }));
Tốt liên kết, nhưng tôi vẫn không hiểu tại sao * * trình biên dịch không cast nó Automagically (như nó với cú pháp lambda) –
Liên kết bị hỏng. –
Vẫn đang làm việc cho tôi? –