की आवश्यकता होती है आप एक इंटरफेस IFoo
एक अंतरफलक जहां केवल कुछ कार्यान्वयन IDisposable
public interface IFoo
{
void Bar();
}
के इस इंटरफेस के पांच कार्यान्वयन हैं मान लीजिए रचना कर रहे हैं डिजाइनिंग। उन दो कार्यान्वयनों को IDisposable
को भी लागू करना चाहिए क्योंकि वे अप्रबंधित संसाधनों का उपयोग करते हैं। कॉलर के परिप्रेक्ष्य से, लागू IDisposable
लागू होने पर यह सबसे आसान होगा, इसलिए को using
ब्लॉक में लपेटा जा सकता है, लेकिन निश्चित रूप से कुछ कार्यान्वयन खाली Dispose()
विधियों से भरे जाएंगे। ऐसा करने के अन्य तरीके सिर्फ उत्सुक हैं?
संपादित
इसकी स्पष्ट रूप से बेहतर IFoo
IDisposable
लागू किसी भी जिम्मेदारी ग्राहक से दूर ले करने के लिए। यह कैसे पता चलेगा कि कब और कब जांचना है कि कुछ संभवतः आईडीस्पोज़ेबल है या नहीं? उन्हें अन्यथा सब कुछ के साथ ऐसा करना होगा। हर कोई कुछ खाली निपटान() विधियों से सहमत होने लगता है किसी को भी चोट नहीं पहुंचाएगा।
इस सवाल से बाहर निकलने की सबसे अच्छी बात यह है कि मार्क ग्रेवेल के जवाब में "जैसा" और "उपयोग" के साथ कुछ डिस्पोजेबल हो सकता है या नहीं।
public interface IDisposableFoo : IFoo, IDisposable
{
}
किसी भी वर्ग इस इंटरफेस इनहेरिट अभी भी एक IFoo के रूप में इलाज किया जा सकता है:
यदि कॉलर केवल 'IFoo' के बारे में जानता है, और 'IFoo' के कुछ कार्यान्वयन का निपटारा किया जाना चाहिए,' IFoo' को' IDISposable' का उत्तराधिकारी होना चाहिए। – Dyppl
हाँ मैंने उल्लेख किया है कि मेरे प्रश्न में, कंक्रीट कक्षाओं में IDISposable के अनावश्यक कार्यान्वयन से बचने के लिए समस्या के किसी भी अन्य दृष्टिकोण के बारे में उत्सुक था, जिसकी आवश्यकता नहीं थी। –
एकमात्र अन्य विकल्प कॉलर पक्ष पर 'आईडीस्पोजेबल' लागू करने वाले गीलेर को जांचने के लिए है, मेरा उत्तर देखें। – Dyppl