我使用事件作为游戏模型的一部分,对于可扩展性和代码“本地化”的缘故,我需要能够否决大多数操作。有没有实现“可选择”事件的标准方法?
更清楚,几乎具有副作用,每个方法采用这种形式:
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;
}
我想什么是TryingToDoSomething(...),以便能够表明一个注册的事件处理程序的对象(通过返回false,修改out参数或其他)。因此,该代码在道德上等同于:
/*
* 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#/ .NET中是否存在可接受的或标准的方法?
我的Java(命名)根让我再次陷入困境。这正是我所期待的。 – 2009-06-23 23:13:29