Tôi đang sử dụng các sự kiện như là một phần của mô hình trò chơi và để mở rộng và mã "địa phương", vì vậy tôi cần có thể phủ quyết hầu hết các hành động.Có cách nào tiêu chuẩn để triển khai các sự kiện "Có thể phủ nhận" không?
rõ ràng hơn, gần như mọi phương pháp mà có một tác dụng phụ có dạng như sau:
public event TryingToDoSomethingHandler TryingToDoSomething;
public event SomethingHappenedHandler SomethingHappened;
/*
* Returning true indicates Something happened successfully.
*/
public bool DoSomething(...)
{
//Need a way to indicate "veto" here
TryingToDoSomething(...);
//Actual do it
SomethingHappened(...);
return true;
}
Những gì tôi muốn là cho TryingToDoSomething (...) để có thể chỉ ra rằng một sự kiện đã đăng ký đối tượng xử lý (thông qua trả về false, sửa đổi một tham số ngoài, hoặc một cái gì đó). Vì vậy, mã tương đương về mặt đạo đức:
/*
* Returning true indicates Something happened successfully.
*/
public bool DoSomethingImproved(...)
{
//Pretty sure multicast delegates don't work this way, but you get the idea
if(!TryingToDoSomething(...)) return false;
//Actual do it
SomethingHappened(...);
return true;
}
Có cách nào được chấp nhận hoặc tiêu chuẩn để thực hiện việc này trong C# /. NET?
Rễ Java của tôi (đặt tên) làm cho tôi trở lại một lần nữa. Điều này thật đúng với gì mà tôi đã tìm kiếm. –