2009-06-09 11 views
5

क्या यह .NET इंटरफेस में घटनाओं का पर्दाफाश करने के लिए बुरी आदत माना जाता है?खराब अभ्यास: एक इंटरफेस में एक घटना का पर्दाफाश?

मैं बहुत कुछ .नेट फ्रेमवर्क इंटरफेस है कि घटनाओं का पर्दाफाश मिल गया है।

धन्यवाद

उत्तर

7

ठीक है, विशेष रूप से एक इंटरफेस है जो शायद .NET में सबसे महत्वपूर्ण इंटरफेस में से एक है और यह एक घटना का खुलासा करता है ... INotifyPropertyChanged। :)

मैं FxCop या फ्रेमवर्क दिशानिर्देश से इसके खिलाफ किसी भी सिफारिश कभी नहीं देखा है और मैं नहीं देख सकते हैं क्यों नहीं होगा। एकमात्र चीज यह है कि यदि आप इंटरफ़ेस को स्पष्ट रूप से कार्यान्वित करते हैं तो यह स्पष्ट रूप से ईवेंट को लागू करने के लिए बट में दर्द होता है क्योंकि आपको स्पष्ट ऐड/निकालने वाले एक्सेसर्स का उपयोग करना होता है।

0

मुझे लगता है कि यह मुख्य रूप से है, क्योंकि घटनाओं इंटरफेस के लिए जरूरत की जगह ले सकता।

आम तौर पर, एक अंतरफलक इस तरह के उदाहरण के लिए जावा जैसी भाषाओं में एक घटना प्रणाली के लिए इस्तेमाल किया जाएगा। .NET में, यदि आपके पास एक ऐसी घटना है जिसे एक विधि के साथ सब्सक्राइब किया जा सकता है, तो पूरी कक्षा के साथ ही उस विधि की आवश्यकता नहीं होती है।

मुझे यकीन है कि वैध परिस्थितियां हो सकती हैं जहां घटनाओं को लागू करने वाले इंटरफेस मौजूद हैं, लेकिन मैं घटनाओं को इंटरफेस की आवश्यकता को कम करने के लिए एक तरीका के रूप में देखता हूं, इंटरफ़ेस लिखने के लिए जरूरी नहीं है।

मैं निश्चित रूप से यह बुरा व्यवहार हालांकि पर विचार नहीं होगा।

2

मैं इसके साथ कोई समस्या नहीं देखते हैं। यह सिर्फ एक अनुबंध निर्दिष्ट कर रहा है, और विशेष रूप से यह निर्दिष्ट करता है कि यह उस प्रकार की घटना को आग लगती है।

मैं व्यक्तिगत रूप से हमारी आंतरिक इंटरफेस के कुछ ही में इसका इस्तेमाल करते हैं, और यह वास्तव में कोड को साफ मदद की। यदि आप इसे इंटरफ़ेस में निर्दिष्ट नहीं करते हैं, तो इसे ठोस वर्ग में होना होगा, और आप किसी विशेष कार्यान्वयन से बंधे रहेंगे।

3

क्या इसके लायक है के लिए, मैं नहीं मानता कि यह बिल्कुल एक बुरी आदत है।

यह निश्चित रूप से है कि आम नहीं है, लेकिन (मुझे लगता है) की जरूरत है या अन्य तकनीकों के उपयोग की कमी है, क्योंकि है कि अधिक है।

मैं इंटरफेस करने के लिए बहुत अच्छा प्रभाव पर घटनाओं का उपयोग किया है।

नोट: यदि आप COM या WCF के माध्यम से इंटरफ़ेस का पर्दाफाश करना चाहते हैं तो घटनाओं शायद एक गरीब पसंद कर रहे हैं, लेकिन वह मामलों की एक अल्पसंख्यक है। इंटरफेस में

+1

मैं COM और घटनाओं के बारे में उस बिंदु पर दूसरा स्थान दूंगा। आप विश्वास नहीं करेंगे कि COM इंटरऑप रैपर घटनाओं के साथ कितना अपमानजनक है। – Josh

2

घटनाक्रम कुछ उचित इस्तेमाल होता है। वे किसी ऑब्जेक्ट के "आउटगोइंग" इंटरफेस को निर्दिष्ट करने का एक तरीका प्रदान करते हैं।

उदाहरण के लिए, IBindingList एक ListChanged घटना में शामिल है।

एक महत्वपूर्ण डिजाइन निर्णय यह है कि घटना को अन्य तरीकों के साथ एक इंजिनिंग इंटरफेस में शामिल करना है या इसे एक अलग इंटरफेस में रखना है। मुख्य कारक यह है कि उस विशेष घटना के तरीकों को कितनी दृढ़ता से जोड़ा जाता है।

0

इंटरफ़ेस के लिए एक ईवेंट की आवश्यकता के लिए यह बिल्कुल तार्किक है, जब इंटरफ़ेस को वास्तव में एक ईवेंट की आवश्यकता होती है!

0

मैं यह बिल्कुल बुरा है नहीं लगता!मैंने एक इंटरफेस को परिभाषित किया ताकि मैं अपने मुख्य एप्लिकेशन को उस घटक से डीक्यूपल कर सकूं जिसे मुझे अक्सर अद्यतन करने की आवश्यकता है और इस प्रकार, रनटाइम पर गतिशील रूप से तत्काल और आग्रह करें। घटक क्या करता है इसके बारे में स्थिति संवाद करने के लिए, मैंने इंटरफ़ेस अनुबंध में कई घटनाओं को परिभाषित किया ताकि मुख्य एप्लिकेशन जानता है कि किस चीज की सदस्यता लेनी है और घटक मुख्य रूप से मुख्य एप्लिकेशन की ज़रूरतों को प्रकाशित करता है।

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