2009-09-09 16 views
6

बस एक त्वरित: सार्वजनिक वर्ग की घटनाओं के लिए कार्य प्रतिनिधियों का उपयोग करने पर लोगों के विचार क्या हैं जो स्वयं के ईवेंट प्रतिनिधि प्रकारों को परिभाषित कर रहे हैं? मुझे पता है कि "नाबालिग" प्रतिनिधियों जैसे लैमदास और फॉरएच() एक्सटेंशन विधियों आदि के लिए कई कार्रवाइयां हैं, लेकिन वास्तविक वर्ग इवेंट सदस्यों के लिए, क्रियाओं का उपयोग एक अच्छा विचार है? इस क्षेत्र में "सर्वोत्तम अभ्यास" क्या है।सी #: कार्य प्रतिनिधि बनाम स्पष्ट प्रतिनिधि

धन्यवाद

+0

http://izlooite.blogspot.com/2011/02/delegates-vs-methods.html –

उत्तर

11
कार्रवाई करने के बजाय

, मैं किसी भी घटना घोषणाओं के लिए EventHandler<TEventArgs> का उपयोग करें। यह मेरे अपने प्रतिनिधि प्रकार को परिभाषित करने की आवश्यकता को हटा देता है। यह System.EventArgs से डेटा प्रकार को प्राप्त करने के लिए मजबूर करने का अतिरिक्त लाभ भी है और इसलिए नेट ईवेंट पैटर्न के साथ अच्छी तरह से खेलता है।

+1

लेकिन यह आपको TEventArgs के कार्यान्वयन को लागू करने के लिए मजबूर करता है, भले ही आप केवल एक मान वापस करना चाहते हैं ... यह कहकर, एक [ScalarEventArgs जहां टी: संरचना] पर्याप्त होगा। – Benjol

+0

.NET ईवेंट मॉडल के अनुरूप है जो वास्तव में System.EventArgs से प्राप्त एक कंटेनर क्लास बनाने के प्रयास के लायक है? इस मॉडल के अनुरूप नहीं मैं वास्तव में क्या खो रहा हूं? – MrLane

+3

एक चीज जो हो सकती है वह है यदि आपको बाद में अपनी घटना के साथ कुछ अतिरिक्त जानकारी वापस करने की ज़रूरत है, तो आपको इसे अपने EventArgs क्लास में जोड़ना है। जहां आप कहते हैं कि एक्शन कहें तो आपको हमेशा स्ट्रिंग वापस करना होगा, चाहे आप इसे बदल दें, और यदि आप इसे बदलते हैं, तो यह आपके सभी कोड को तोड़ देगा जो इसका उपयोग करता है। –

संबंधित मुद्दे