2011-04-21 14 views
7

Resharper मुझसे कहता है कि MemberInfo.DeclaringType अशक्त कभी नहीं हो सकता: enter image description hereअजीब Resharper चेतावनी MemberInfo.DeclaringType पर

लेकिन जब कि कोड चलता है, पाठ "शीर्ष स्तर सदस्य" छपा है। मुझे यह नहीं मिला, यहाँ क्या गलत है?

+0

क्या आपने पूर्ण स्वच्छ और पुनर्निर्माण किया था? अक्सर resharper अजीब चेतावनी डालता है क्योंकि यह हाल ही में अपने विश्लेषण को फिर से नहीं किया है। अन्यथा यह सिर्फ एक बग हो सकता है। – captncraig

+0

@ सीएमपी, जेप मैंने किया। और मुझे यह अजीब लगता है कि यह एक बग होगा, क्योंकि NotNullAttribute जैसे गुण, मानक पुस्तकालयों को स्वचालित रूप से असाइन किए जाते हैं। अगर उस कोड में कोई बग था, तो इससे पहले देखा जाना चाहिए था। – JBSnorro

+0

मेरा मतलब resharper के स्थिर विश्लेषण इंजन में एक बग था। – captncraig

उत्तर

6

रिशेर्पर बस यहां गलत है। MemberInfo एक abstract प्रकार है और एक मनमाना कार्यान्वयन के लिए वापस जाने के लिए जो कुछ भी यह सहित null

उदाहरण प्रसन्न यह संभव है:

class EvilMemberInfo : MemberInfo 
{ 
    public override System.Type DeclaringType 
    { 
     get { return null; } 
    } 

    // Rest omitted for brevity 
} 
+0

यह बिल्कुल ओवरराइड सिस्टम है। टाइप DeclaringType के लिए उपयोग करता है। शायद उन्हें इसे एविल टाइप कहा जाना चाहिए। =] – rsbarro

+0

मैंने हाल ही में रिशेर्पर में एक बग पाया है, लेकिन यह पता चला कि मैं गलत था। इस बार हालांकि, मैंने अपने प्रश्न को थोड़ा कम आक्रामक बताया, लेकिन मैं आपसे सहमत हूं। – JBSnorro

+0

@rsbarro, नहीं! यह सिस्टम के लिए बिल्कुल ओवरराइड नहीं है। टाइप करें, क्योंकि प्रकारों को नेस्टेड किया जा सकता है .... – JBSnorro

10

माइक्रोसॉफ्ट कोड संविदा कहा गया है यह कभी नहीं अशक्त है।

// System.Reflection.MemberInfo 
public virtual Type DeclaringType 
{ 
    get 
    { 
     Contract.Ensures(Contract.Result<Type>() != null, null, "Contract.Result<Type>() != null"); 
     Type result; 
     return result; 
    } 
} 

तो रीशेपर कोड संविदाओं पर निर्भर करता है।

+0

ठीक है, मैंने इसे कोड अनुबंध मंच पर पोस्ट किया है, http://social.msdn.microsoft.com/Forums/en-US/codecontracts/thread/fdf1436a-e843-408c -b932-c012e03e72cd – JBSnorro