मैं जो करने की कोशिश कर रहा हूं वह पर्यवेक्षक पैटर्न को कार्यान्वित कर रहा है।ऑब्सर्वर बनाम प्रतिनिधियों के लिए सी # में IObserver और IObservable, घटनाक्रम
तो, मैं इस समाधान के साथ आया था:
हम एक PoliceHeadQuarters जिसका प्राथमिक काम उन सभी जो यह की सदस्यता ली है पर सूचनाएं भेजने की है। इस बात पर विचार करें कि डीएसपी, इंस्पेक्टर और सब इंस्पेक्टर कक्षाएं पुलिस हेडक्वॉर्टर की सदस्यता लेती हैं।
का उपयोग करते हुए घटनाक्रम और प्रतिनिधियों मैं
public class HeadQuarters
{
public delegate void NewDelegate(object sender, EventArgs e);
public event EventHandler NewEvent;
public void RaiseANotification()
{
var handler = this.NewEvent;
if (handler != null)
{
handler(this, new EventArgs());
}
}
}
public class SubInspector
{
public void Listen(object sender, EventArgs e)
{
MessageBox.Show(string.Format("Event Notification received by sender = {0} with eventArguments = {1}", sender, e.ToString()));
}
}
public class Inspector
{
public void Listen(object sender, EventArgs e)
{
MessageBox.Show(string.Format("Event Notification received by sender = {0} with eventArguments = {1}", sender, e.ToString()));
}
}
लिखा था और यह मैं इसे कैसे
var headQuarters = new HeadQuarters();
var SubInspector = new SubInspector();
var Inspector = new Inspector();
headQuarters.NewEvent += Inspector.Listen;
headQuarters.NewEvent += SubInspector.Listen;
headQuarters.RaiseANotification();
तो लागू है, दोनों इंस्पेक्टर और सब इंस्पेक्टर कक्षाएं सूचना मिलती है तो जब भी समारोह RaiseANotification() शुरू हो जाती है।
ऐसा लगता है कि डॉटनेट फ्रेमवर्क 4, 4.5 IObserver और IObservable नामक एक नए तरीके का समर्थन करता है।
क्या कोई मुझे उपरोक्त परिदृश्य के लिए IObservable और IObserver पैटर्न का उपयोग करके एक सुपर सरल उदाहरण दे सकता है? मैं केवल इंटरनेट में उपलब्ध उदाहरणों को ढूंढने के लिए गुमराह हूं और समझने में मुश्किल हूं।
मेरे hinch: (शायद मुझे लगता है कि यह गलत है)
class DSP : IObserver //since it observes the headquarters ?
class PoliceHeadQuarters: IObservable // since here's where we send the notifications ?
अग्रिम धन्यवाद।
संपादित करें: किसी ने यह भी कहा कि एमएसडीएन दस्तावेज IObservable @ IObservable vs Plain Events or Why Should I use IObservable? के लिए भी गलत है।
http://msdn.microsoft.com/en-us/library/dd990377.aspx - एक अच्छा उदाहरण है, आप इसे संकलित करने और चलाने का प्रयास क्यों नहीं करते? – Spook
@Spook: समस्या वास्तव में मैं उन उदाहरणों के साथ अपने परिदृश्य को सह-संबंधित नहीं कर सकता। किसी भी कंकाल कोड संरचना को आगे जाने में मेरी मदद करनी चाहिए .. –
ऐसा लगता है कि माइक्रोसॉफ्ट का उदाहरण मूल इवेंट एग्रीगेटर का उपयोग कर रहा है। एक और जटिल लेकिन अंत में, अधिक लचीला दृष्टिकोण। एग्रीगेटर IObserver के प्रकारों को अनुक्रम में बुलाता है।मुझे लगता है कि इसीलिए इंटरफेस-आधारित दृष्टिकोण प्रतिनिधियों के विरोध में उपयोग किया जाता है। –