मैं मानक एमएस इवेंट हैंडलर प्रतिनिधि हस्ताक्षर का उपयोग करने के लाभों को समझता हूं क्योंकि यह आपको पुरानी प्रतिनिधि हस्ताक्षर पर आधारित पुराने संबंधों को तोड़ने के साथ घटना के माध्यम से पारित जानकारी पर आसानी से विस्तार करने की अनुमति देता है।मानक (ओब्जे प्रेषक, EventArgs args) हस्ताक्षर के साथ एक ईवेंट हैंडलर प्रतिनिधि बनाने के लिए यह कितना गलत है?
जो मैं सोच रहा हूं वह इस अभ्यास में है कि लोग इस नियम का कितनी बार पालन करते हैं? मेरे पास कहने के इस तरह एक साधारण घटना
public event NameChangedHandler NameChanged;
public delegate void NameChangedHandler(Object sender, string oldName, string newName);
यह एक साधारण घटना है, और मैं लगभग सकारात्मक है कि केवल तर्क मैंने कभी जा रहा हूँ पता करने के लिए NameChanged घटना से वस्तु जिसका नाम बदल दिया है की जरूरत करने के लिए कर रहा हूँ, पुराना नाम, और नया नाम। तो क्या यह एक अलग NameChangedEventArgs वर्ग बनाने के लिए लायक है, या इस तरह की सरल घटनाओं के लिए सीधे प्रतिनिधियों के तर्कों के माध्यम से सीधे तर्कों को वापस करने के लिए स्वीकार्य है?
आप इसे निश्चित रूप से अनुकूलित कर सकते हैं, केवल एक संपत्ति, या तीन, या जितनी चाहें उतनी हो। मेरे पास 1, 2, या 3 गुणों के साथ स्निपेट हैं, साथ ही किसी विशिष्ट ईवेंट डेटा के साथ ईवेंट बनाने के साधारण मामले के लिए। –
मुझे पता है कि यह एक पुराना उत्तर है, लेकिन मैं सिर्फ इस धागे के लिए एक लिंक जोड़ना चाहता हूं: [.NET में ईवेंट हस्ताक्षर - एक मजबूत टाइप किए गए 'प्रेषक' का उपयोग करना?] (Http://stackoverflow.com/q/ 1046016/69809)। आईएमएचओ के पास एक सम्मेलन का पालन करने का कोई कारण नहीं है, अगर इसका परिणाम बदबूदार कोडिंग प्रथाओं में होता है (उदाहरण के लिए 'प्रेषक' पैरामीटर कास्टिंग)। 'EventArgs' क्लास स्वयं भी कोई लाभ नहीं प्रदान करता है, हालांकि आप * तर्क दे सकते हैं कि स्रोत संगतता बनाए रखने के लिए पास डेटा को लपेटना बेहतर है। – Groo
@ ग्रू, यह एक दिलचस्प विचार है। मैंने पहले उस धागे को नहीं देखा था। ध्यान दें कि जिस व्यक्ति ने प्रश्न पूछा * यहां * दो से अधिक गुणों के साथ एक ईवेंट हैंडलर प्रतिनिधि का उपयोग करने के बारे में बात कर रहा था, और मानक 'प्रेषक, EventArgs' पैटर्न का उपयोग नहीं कर रहा था। यहां पर क्या मुद्दा था 'प्रेषक' का इतना अधिक नहीं था, जैसा कि एकाधिक पैरामीटर के बजाय एकल 'EventArgs' या' EventArgs 'पैरामीटर का उपयोग करना है या नहीं। –