.net

2008-10-29 4 views
5

में इवेंट हस्ताक्षर पैटर्न .net में ईवेंट प्रतिनिधियों के लिए मानक पैटर्न में क्या बिंदु है? अर्थात। EventHandler पूर्वनिर्धारित प्रतिनिधि? आवश्यकता के लिए सबसे उपयुक्त हस्ताक्षर क्यों न चुनें?.net

संपादित करें: और इसके अलावा, यह slavishly सभी मामलों में माइक्रोसॉफ्ट के उदाहरण का अनुसरण करने के लिए आवश्यक है?

उत्तर

3

यह हमेशा की स्थिरता और संस्करण-साथ sender परमाटर हमेशा की तरह System.Object और args पैरामीटर के लिए मुख्य रूप से है एक System.EventArgs, या एक dervied वर्ग तत्संबंधी, आप परिवर्तन के साथ ही इस तर्क यह करने के लिए पारित कर दिया बदल सकते हैं EventArgs बाद में किसी मौजूदा कोड को तोड़ने के बिना टाइप करें।

पूरे नेट इवेंट मुहावरा घटक आधारित विकास, कॉलिंग कहां कोड की घटनाओं के साथ घटक के डेवलपर के नियंत्रण में नहीं है समर्थन करने के लिए डिजाइन किया गया था।

2

यह कॉल प्राप्त करने वाला से फोन करने वाले अलग करता।

3

यह एक अच्छा सवाल है। हेरेटिकल, लेकिन अच्छा। मैंने हाल ही में एक ब्लॉग पोस्ट पढ़ा है (मुझे लिंक नहीं मिल रहा है - क्या किसी के पास यह लिंक है) जिसने मिथक को खारिज कर दिया है कि आपको हमेशा सिस्टम इवेंट को ओवरराइड करने की ज़रूरत है। अच्छा ईवेंट हैंडलिंग प्रदान करने के लिए।

मैं सभी सम्मेलन के लिए हूं और नियमों का पालन कर रहा हूं, लेकिन यह एक ऐसा है जो मुझे लगता है कि बाध्यकारी होने के लिए तर्क दिया जा सकता है - अगर टिकाऊ नहीं है। प्रत्येक घटना के लिए System.EventArgs को लगातार ओवरराइड करने की आवश्यकता नियमित रूप से युग्मन में जोड़ती है - अब ट्रैक रखने के लिए अभी तक एक और चीज है।

एक "ई" कि सदस्यों को प्रदान करता है के बाद किसी भी अधिक उपयोगी या तर्कों की एक अच्छी तरह से नामित सेट की तुलना में सहज नहीं है। मुझे नहीं लगता कि तर्क को अनुशंसित सिस्टम प्रेषित करने के लिए जीता जा सकता है। EventArg पैटर्न, लेकिन मैं उस तर्क को बनाने के लिए आपके साथ रखूंगा।

4

सी # 1.0 में आरपी सम्मेलन भावना का एक बहुत नहीं किया। सी # 2.0 में, जहां एक निश्चित मात्रा में प्रतिनिधि भिन्नता है, यह अधिक समझ में आता है।

यदि आपके पास कोई ईवेंट हैंडलिंग विधि है जो वास्तव में पैरामीटर की परवाह नहीं करती है, उदा।

public void SaveDocument(object sender, EventArgs args) 
{ 
    // Save the document here 
} 

आप अब किसी भी घटना जो सम्मेलन इस प्रकार की सदस्यता के लिए भले ही वास्तविक प्रेषक या आर्ग अधिक सख्ती से लिखे जाते हैं कि विधि का उपयोग कर सकते हैं। इसका मतलब है कि आप एक कीबोर्ड ईवेंट के लिए एक ही हैंडलर का उपयोग कर सकते हैं, एक बटन क्लिक इत्यादि।