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' घटना से समाप्त हो गया है गैर तुच्छ है, मैं करूंगा तर्क दें कि 'ऑनडेटेड' ईवेंट अनावश्यक है। – Matthew
तकनीकी रूप से सच है, लेकिन मैं उन स्थानों की संख्या को कम करना चाहता था जिनमें मुझे उस सटीक कोड को लिखना होगा, यानी: अपूर्ण वस्तु को इसके कंटेनर से हटा देना, यूआई में प्रभाव प्रस्तुत करना आदि। लेकिन मैं देखता हूं कि यह कितना प्यार करता है नीचे उदाहरण आपकी टिप्पणी को संकेत देगा। –