2011-10-31 8 views
6

मैं VisualStudio 2008 और 2010, ReSharper के साथ दोनों का उपयोग कर रहा है, और जब मैं किसी दिए गए विधि मैं के उपयोगों के लिए देखने के लिए कोशिश द्वारा कार्यान्वित एक इंटरफेस के माध्यम से इस्तेमाल किया नहीं खोजा जा सका विधि प्राप्त होने के बावजूद कोई परिणाम नहीं, और फिर एक इंटरफेस के माध्यम से बुलाया। क्या गलत है? क्या वह एक वीएस/रीशेपर बग है? उदाहरण नीचे देखें:सी # - विधि के उपयोग जब विरासत में मिला और उपवर्ग

using System; 
namespace UsageNotFound 
{ 
    interface MyInterface 
    { 
     void Hello(); 
    } 

    class SuperClass 
    { 
     public void Hello() //NOTE: VS 2008/2010 (with resharper) 
seems unable to find usages on this!!! 
     { 
      Console.WriteLine("Hi!"); 
     } 
    } 

    class SubClass : SuperClass, MyInterface 
    { 
     public static MyInterface GetInstance() 
     { 
      return new SubClass(); 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      SubClass.GetInstance().Hello(); 
     } 
    } 
} 

धन्यवाद, फैब्रिजियो

+0

वर्क्स के साथ (VS 2010 + ReSharper 6) और यह सही IntelliSense हो जाता है और ठीक संकलित करता है। –

+0

@peer। आपको एक पहुँच संशोधक – ChrisBint

+0

सत्यापित है कि यह मेरे लिए या तो काम नहीं करता है की जरूरत नहीं है। Resharper 5.1 के साथ। – Ray

उत्तर

1

यह एक ज्ञात समस्या है: http://youtrack.jetbrains.net/issue/RSRP-46273 कोई मौजूदा लक्ष्य को ठीक संस्करण मेरे लिए

+0

मैंने इसे कुछ महीने पहले तय कर दिया है =) – xtmq

1

शायद अपने SuperClass इंटरफ़ेस को लागू नहीं करता है क्योंकि। इससे ReSharper के लिए समस्या हो सकती है। प्रयास करें:

class SuperClass : MyInterface 
    { 
     public void Hello() 
     { 
      Console.WriteLine("Hi!"); 
     } 
    } 
+1

हालांकि मैं सहमत हूं कि बेस क्लास को इंटरफ़ेस को कार्यान्वित करना चाहिए, इसलिए यह एक कार्य बना रहा है 'हैलो()' अपने मुद्दे को हल करना आवश्यक नहीं है । उनका मुद्दा ReSharper के संस्करण के साथ शामिल हो सकता है? –

+0

मुझे लगता है कि सुपरक्लास को इंटरफ़ेस को कार्यान्वित करने की अवधारणा की आवश्यकता नहीं है। सुपरक्लास शायद एक अलग परियोजना (या लाइब्रेरी) में भी हो सकता है, और इंटरफ़ेस से पूरी तरह से decoupled हो सकता है। – Fabrizio

0

यह सब जिस क्रम में SubClass विरासत SuperClass और MyInterface से Hello() विधि के साथ क्या करना है।

मुझे आश्चर्य है कि आपको चेतावनी नहीं मिली है कि SubClass.Hello() (इंटरफ़ेस परिभाषा को लागू करने से) SuperClass.Hello() छिपाएगा।

+0

मुझे नहीं लगता कि कोई छुपा हुआ है: कार्यान्वयन को स्पष्ट रूप से प्रदान किया जाना चाहिए, और यह बेस क्लास में प्रदान किया जाता है। उस नमूने में उस विधि का केवल एक कार्यान्वयन है। – Fabrizio

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