私はイベントをゲームモデルの一部として使用しています。拡張性とコードのために、私は大部分の行動を拒否できる必要があります。私が好きな何"拒否権"イベントを実装する標準的な方法はありますか?
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パラメータを変更することなど)。 。C#の/ NETでこれを行うには受け入れられたかの標準的な方法はあり
/*
* 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;
}
:コードは道徳的に同等になるように?
私のJava(命名)ルーツはもう一度私をハンディキャップします。これはまさに私が探していたものです。 –