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); }
}
}
Có một vấn đề với việc kiểm tra các điều kiện để cạn kiệt và nâng cao sự kiện rằng nếu cần thiết trong kiện UnitCountChanged, hay tôi nên làm cả hai trong setter UnitCount (và bất cứ nơi nào khác trong một ví dụ không tầm thường)?Có mùi nào để tăng sự kiện từ một sự kiện khác không?
Nếu đó là không tầm thường để xác định rằng một mục được cạn kiệt từ 'sự kiện OnUnitCountChanged', tôi sẽ cho rằng sự kiện 'OnDepleted' là dư thừa. – Matthew
Về mặt kỹ thuật, nhưng tôi muốn giảm thiểu số lượng nơi tôi sẽ phải viết mã chính xác đó, ví dụ: xóa đối tượng đã cạn khỏi vùng chứa, hiển thị các hiệu ứng trong giao diện người dùng, v.v. ví dụ xuống sẽ nhắc nhận xét của bạn. –