मैं एक .NET प्रोजेक्ट पर काम कर रहा हूं, जिसे कुछ उपयोगकर्ता परिभाषित कक्षाओं के साथ बातचीत करने की आवश्यकता है - "नौकरियां" के रूप में संदर्भित किया गया है। पुस्तकालय के उपभोग के लिए सभी नौकरी कक्षाओं को एक विशिष्ट इंटरफ़ेस IJob
लागू करना होगा। कभी-कभी नौकरी कक्षा में अप्रबंधित संसाधन हो सकता है, जिसे स्पष्ट रूप से निपटाया जाना चाहिए।मुझे संभावित रूप से डिस्पोजेबल वस्तुओं का निपटान कैसे सुनिश्चित करना चाहिए?
मुझे यह कैसे सुनिश्चित करना चाहिए कि उपयोग के बाद सभी नौकरियों का सही ढंग से निपटान किया जाए, अगर मुझे पहले से पता नहीं है कि नौकरी को स्पष्ट निपटान की आवश्यकता है? मैं कुछ विचार अपने आप को है, लेकिन अपनी टिप्पणी/सुझाव सुनना पसंद करेंगे:
IJob : IDisposable
करें, सभी नौकरियों के लिए मजबूर कर एकDispose()
विधि लागू करने के लिए। यह मुझेusing
ब्लॉक में नौकरियों के साथ काम करने की अनुमति देगा, लेकिन अधिकांश नौकरियां स्पष्ट निपटान की आवश्यकता होने की उम्मीद नहीं है, इससे क्लाइंट डेवलपर्स के लिए अनजान भ्रम हो सकता है।try-finally
ब्लॉक में नौकरियों को शामिल सभी काम करते हैं, औरfinally
का उपयोग सुनिश्चित करने के लिए कि क्या कार्य को लागू करता हैIDisposable
किDispose()
कहा जाता है। इससे ग्राहकों को एक नई नौकरी कक्षा लागू करने में आसान बनाता है - एक खालीDispose()
विधि को लागू नहीं करने के द्वारा - लेकिन यह इस तथ्य को भी छुपाता है कि लाइब्रेरी जानता है और डिस्पोजेबल नौकरियों की परवाह करता है।
इस लिखाई के बाद, मैं # 1 समाधान की दिशा में झुक जाते हैं, लेकिन मैं अभी भी लगता है कि यह वैकल्पिक समाधान को देखने के लिए अच्छा होगा, और अतिरिक्त पेशेवरों/दो के लिए विपक्ष मैं पहले से ही मन में है।
अच्छा बिंदु। हालांकि, अधिकांश धाराओं को निपटान की आवश्यकता होगी, और मुझे उम्मीद है कि नौकरियों की केवल अल्पसंख्यक आवश्यकता होगी। –
यह मेरे लिए होता है कि 'System.Web.IHttpModule' को इसके कार्यान्वयनकर्ताओं को' निपटान() 'विधि प्रदान करने की भी आवश्यकता होती है, भले ही केवल कुछ मॉड्यूल (IMHO) को इसकी आवश्यकता हो। मुझे लगता है कि यह # 1 के लिए अतिरिक्त प्राथमिकता प्रदान करता है। –
+1, मुझे लगता है कि इसके अलावा, यह एक नौकरी के लिए एक मानक विधि प्रदान करने के लिए समझ में आता है जो इसे इस्तेमाल करता है। 'आईडीस्पोजेबल' का उपयोग करके आपको ढांचे के समर्थन से लाभ मिलता है और अंत उपयोगकर्ताओं को कम से कम उचित सफाई कोड कहां रखना है, इस बारे में सोचना पड़ता है। – user7116