public class Basket
{
private int _unitCount;
public int UnitCount
{
get { return _unitCount; }
set
{
_unitCount = Math.Max(0, value);
OnUnitCountChanged(new EventArgs());
}
}
public event EventHandler UnitCountChanged;
public event EventHandler Depleted;
protected virtual void OnUnitCountChanged(EventArgs args)
{
var handler = UnitCountChanged;
if(handler!=null) { handler(this, args); }
if(_unitCount == 0) { OnDepleted(new EventArgs()); }
}
protected virtual void OnDepleted(EventArgs args)
{
var handler = UnitCountChanged;
if(handler!=null) { handler(this, args); }
}
}
は枯渇のための条件をチェックし、UnitCountChangedイベント内必要であれば、そのイベントを上げる、または私はUnitCountセッターの両方をやって(そしてどこか他の非自明な例で)しなければならないとの問題がありますか?別のイベントの中からイベントを発生させるのは嫌ですか?
それは項目が 'OnUnitCountChanged'イベントから枯渇していることを決定するために、非自明だ場合、私はでしょうOnDepletedイベントは冗長であると主張している。 – Matthew
技術的には真ですが、私はその正確なコードを書かなければならない場所の数を最小限に抑えたいと考えていました。つまり、空のオブジェクトをコンテナから削除したり、UIにエフェクトを提示したりします。あなたのコメントを促す例があります。 –