2010-06-17 8 views
12

मैंने किसी ऑब्जेक्ट के लिए दो गुण "नाम" और "आईडी" परिभाषित किया है जिसका उपयोग मैं एक बॉम्बेडलिस्ट डेटासोर्स के साथ कॉम्बोबॉक्स के डिस्प्लेमेम्बर और वैल्यूमेम्बर के लिए करता हूं।प्रदर्शन/मूल्य सदस्यों के लिए पूरी तरह से संपत्तियों पर Resharper की "अप्रयुक्त संपत्ति" चेतावनी को कैसे हल करें?

मैंने हाल ही में इसका मूल्यांकन करने के लिए Resharper स्थापित किया है। Resharper मुझे इस वस्तु पर चेतावनी दे रहा है कि दो गुणों का उपयोग नहीं किया जाता है।

नमूना कोड:

BindingList<ClassSample> SampleList = new BindingList<ClassSample>(); 
// populate SampleList 
cmbSampleSelector.DisplayMember = "Name"; 
cmdSampleSelector.ValueMember = "ID"; 
cmbSampleSelector.DataSource = SampleList; 

private class ClassSample 
{ 
    private string _name; 
    private string _id; 

    public string Name // Resharper believes this property is unused 
    { 
     get { return _name; } 
    } 

    public string ID // Resharper believes this property is unused 
    { 
     get {return _id; } 
    } 

    public ClassSample(string Name, string ID) 
    { 
     _name = Name; 
     _id = ID; 
    } 
} 

Am मैं कुछ गलत कर या Resharper इस विशेष उपयोग के बारे में कोई खबर नहीं है?

उत्तर

16

जिस तरह से जेटब्रेन सुझाव देते हैं कि आप इन मुद्दों को हल करते हैं, उनके गुणों (Resharper -> विकल्प -> कोड एनोटेशन से उपलब्ध) के साथ है। अपने प्रोजेक्ट/समाधान में विशेषताओं को जोड़ें और फिर इन गुणों को UsedImplicitly विशेषता के साथ चिह्नित करें। Resharper अब मान लेंगे कि गुण प्रतिबिंब या देर से बाध्य या जो कुछ भी के माध्यम से उपयोग किया जाता है।

+9

मेरा सुझाव है कि आप एक उदाहरण दिखाएं, जिसमें विशेषताएं कैसे प्राप्त करें। कुछ लोगों को यह नहीं मिलता है। –

+1

यह गुणों के लिए भी काम करेगा (MeansImplicitUse विशेषता का उपयोग करके)। उदाहरण: [MeansImplicitUse ((ImplicitUseKindFlags.Instantiated | ImplicitUseKindFlags.Assign)] एक निर्भरता इंजेक्शन को चिह्नित करने वाली विशेषता पर –

+1

रीशेपर कोड एनोटेशन का उपयोग करने के लिए, किसी को प्रोजेक्ट में घोषणाएं शामिल करनी होंगी। अधिक जानकारी के लिए [विषय पर JetBrains पृष्ठ] (http://www.jetbrains.com/resharper/webhelp/Code_Analysis__Annotations_in_Source_Code.html)। प्रतिबिंब में उपयोग की जाने वाली किसी संपत्ति के लिए, मुझे वह विशेषता मिली जो मुझे आवश्यक थी [[प्रयुक्त रूप से] '। – JYelton

3

आप प्रतिबिंब के माध्यम से गुणों को सेट कर रहे हैं (यह उपर्युक्त कोड है)। Resharper केवल स्थिर व्यवहार का विश्लेषण कर सकते हैं (कुछ बहुत सीमित अपवादों के साथ), इसलिए यह नहीं पता कि इन गुणों का वास्तव में उपयोग किया जा रहा है।

हालांकि आप चेतावनियों को दबा सकते हैं। बस संपत्ति के नाम पर क्लिक करें और Alt-Enter दबाएं, फिर चेतावनी को दबाने के लिए विकल्प चुनें। यह चर नाम के चारों ओर एक // ReSharper अक्षम टिप्पणी जोड़ देगा।

+0

मैं खोज की है:

PM> Install-Package JetBrains.Annotations 

तो फिर तुम [UsedImplicitly] लिखकर या संदर्भ मेनू (screenshot)

कोड का नमूना का उपयोग करके गुण जोड़ सकते हैं दबाने की चेतावनी टिप्पणियां, हालांकि उदाहरण काफी सरल है; विभिन्न वस्तुओं, आदि के साथ ऐसे कई comboboxes हैं। मैं इतनी सारी टिप्पणियां जोड़ने की जरूरत नहीं है। क्या प्रदर्शन और मूल्य सदस्यों को सेट करने का कोई और तरीका है जो प्रतिबिंब पर भरोसा नहीं करते हैं? – JYelton

+0

जेयलटन: ऐसा नहीं है कि मुझे पता है। आखिरी उपाय के रूप में आप वैश्विक स्तर पर चेतावनी को भी दबा सकते हैं। –

+0

आप फ़ाइल स्तर पर भी चेतावनियां दबा सकते हैं। – ErikE

1

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

+1

क्या डिस्प्ले और वैल्यू सदस्यों को सेट करने का कोई और तरीका है जो प्रतिबिंब पर निर्भर नहीं हैं? – JYelton

+0

नहीं, मैं आमतौर पर टिप्पणी के साथ दबाता हूं, फिर पूरी कक्षा के लिए दबाने के लिए टिप्पणी शुरू/बंद जोड़ी को ले जाएं। –

3

बस डेविड के जवाब में जोड़ने के लिए, Resharper 8.x और बाद में, Resharper.ExternalAnnotations प्लगइन को विजुअल स्टूडियो (Resharper -> Extension Manager) में रिशेर्पर में जोड़ें।

Resharper अगले एक unused property के बारे में शिकायत करते हैं, तो आप तो बाएं हाथ बैंगनी पिरामिड पर क्लिक करें और Used Implicitly चयन है, जो एक UsedImplicitlyAttribute के साथ मैदान/संपत्ति को सजाने कर सकते हैं।

Resharper UsedImplicitly

फिर आप या तो सीधे JetBrains.Annotations.dll के लिए एक संदर्भ अपने प्रोजेक्ट में जोड़ सकते हैं, या आप Resharper Attribute परिभाषा (और NotNullAttribute अन्य लोगों की तरह) से युक्त अपनी परियोजना के लिए एक छोटे Annotations.cs फ़ाइल जोड़ने के जाने के लिए चुन सकते हैं। Annotations.cs फ़ाइल समाधान फ़ोल्डर में Properties आइकन के अंतर्गत स्थित है।

Adding Resharper Annotations.cs to your project

एक के रूप में अलग रूप में, यह रूप में अच्छी तरह विशेषता किसी Description जोड़ने के लिए, उदाहरण के लिए सक्षम होने के लिए होने के लिए अच्छा हो गया होता [UsedImplicitly(Description="Used by NUnit Theory/Reflected by Xyz, etc")], इसलिए अंतरिम में हमें टिप्पणी करने की आवश्यकता होगी।

0

Resharper एनोटेशन स्थापित करने के लिए:

using JetBrains.Annotations; 
class ClassSample 
{ 
    private string _name; 
    private string _id; 

    [UsedImplicitly] 
    public string Name // Resharper believes this property is unused 
    { 
     get { return _name; } 
    } 

    [UsedImplicitly] 
    public string ID // Resharper believes this property is unused 
    { 
     get { return _id; } 
    } 

    public ClassSample(string Name, string ID) 
    { 
     _name = Name; 
     _id = ID; 
    } 
} 
संबंधित मुद्दे