2009-07-06 10 views
12

क्या विजुअल स्टूडियो 2008 को चेतावनी देने के लिए कॉन्फ़िगर किया जा सकता है जब मैं किसी ऑब्जेक्ट को डिस्पोजेबल लागू करने के लिए भूल जाता हूं?क्या विजुअल स्टूडियो मुझे चेतावनी दे सकता है जब मैं एक आईडीस्पोजेबल ऑब्जेक्ट का निपटान करना भूल जाता हूं?

उत्तर

6

विजुअल स्टूडियो, अपने आप में यह सुविधा नहीं है, लेकिन CodeRush साथ आप जहां जरूरत ब्लॉकों का उपयोग कर सम्मिलित करने के लिए डिजाइन समय चेतावनी और refactorings हो सकता है।

+2

रीशेपर भी ऐसा करेगा। –

+0

कोडरश एक्सप्रेस भी मुफ्त में उपलब्ध है: http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/ –

+0

FxCop और Genderme यह भी करेंगे (दोनों मुफ्त) – Paco

1

मुझे नहीं लगता कि यह संकलन समय पर किया जा सकता है।

हालांकि, यह रनटाइम पर किया जा सकता है।
मैंने एक अमूर्त वर्ग 'डिस्पोजेबल' बनाया है (जो IDISposable लागू करता है, और डिस्पोजेबल पैटर्न लागू करता है)। फाइनेंजर में, जब मैं अंतिमकर्ता कहलाता हूं, तो मैं एक आवेषण जारी करता हूं, और ऑब्जेक्ट का निपटारा नहीं किया गया है।

मैं इयान ग्रीफिथ के एक लेख पर इस आधार पर किया है:

http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking

+1

मैं निपटान निपटने के लिए एक आधार वर्ग के होने के खिलाफ तर्क है । चूंकि .NET एकल विरासत है, यह आपको बहुत सख्त विरासत श्रृंखला में लॉक करता है जिसके लिए आपके डिस्प्लेबेस को शीर्ष पर होना आवश्यक है। –

+0

इसके अलावा आप "System.ComponentModel.Component" का उपयोग कर सकते हैं –

0

मुझे यकीन है कि आप C# या VB उपयोग कर रहे हैं नहीं कर रहा हूँ, लेकिन सी # में, "सबसे अच्छा अभ्यास" के लिए रास्ता प्रकार IDISposable की वस्तुओं को संभालने के लिए कोड को एक प्रयोग ब्लॉक में रखना है।

"उपयोग करने वाले कथन प्रोग्रामर को यह निर्दिष्ट करने की अनुमति देता है कि संसाधनों का उपयोग करने वाली वस्तुओं को उन्हें छोड़ देना चाहिए। उपयोग कथन को प्रदान की गई वस्तु को IDISposable इंटरफ़ेस को कार्यान्वित करना होगा। यह इंटरफ़ेस निपटान विधि प्रदान करता है, जिसे ऑब्जेक्ट के संसाधनों को छोड़ना चाहिए।" - MSDN Link

HTH,

-Dan

+3

यह किसी भी तरह से प्रश्न का उत्तर नहीं देता है। –

+0

क्या विजुअल स्टूडियो 2008 को मुझे चेतावनी देने के लिए कॉन्फ़िगर किया जा सकता है यदि मैं ऐसी ऑब्जेक्ट बनाता हूं जो IDISposable लागू करता है, और उसके बाद इसे उपयोग करने वाले ब्लॉक में संलग्न करना भूल जाता है? – ChrisW

2

यदि आप FxCop डिजाइन पर बारी नियम यह आपको बता जब आप IDisposable को लागू नहीं है और आप सदस्य हैं जिसमें IDisposable को लागू है, इस तरह होगा:

class Program 
{ 
    private DataTable NotDisposed; 

    public Program() 
    { 
     NotDisposed = new DataTable(); 
    } 
    static void Main() 
    { 
    } 
} 
+0

FxCop इस तरह की सामग्री के लिए बहुत अच्छा है। 'अगर यह दृश्य स्टूडियो वास्तव में आपको चेतावनी देता है तो यह अच्छा होगा अगर आपने गलती की है (या आईडीस्पोज़ेबल लागू करना), लेकिन बिल्ली। –

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

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