Resharper मुझसे कहता है कि MemberInfo.DeclaringType अशक्त कभी नहीं हो सकता: अजीब Resharper चेतावनी MemberInfo.DeclaringType पर
लेकिन जब कि कोड चलता है, पाठ "शीर्ष स्तर सदस्य" छपा है। मुझे यह नहीं मिला, यहाँ क्या गलत है?
Resharper मुझसे कहता है कि MemberInfo.DeclaringType अशक्त कभी नहीं हो सकता: अजीब Resharper चेतावनी MemberInfo.DeclaringType पर
लेकिन जब कि कोड चलता है, पाठ "शीर्ष स्तर सदस्य" छपा है। मुझे यह नहीं मिला, यहाँ क्या गलत है?
रिशेर्पर बस यहां गलत है। MemberInfo
एक abstract
प्रकार है और एक मनमाना कार्यान्वयन के लिए वापस जाने के लिए जो कुछ भी यह सहित null
उदाहरण प्रसन्न यह संभव है:
class EvilMemberInfo : MemberInfo
{
public override System.Type DeclaringType
{
get { return null; }
}
// Rest omitted for brevity
}
यह बिल्कुल ओवरराइड सिस्टम है। टाइप DeclaringType के लिए उपयोग करता है। शायद उन्हें इसे एविल टाइप कहा जाना चाहिए। =] – rsbarro
मैंने हाल ही में रिशेर्पर में एक बग पाया है, लेकिन यह पता चला कि मैं गलत था। इस बार हालांकि, मैंने अपने प्रश्न को थोड़ा कम आक्रामक बताया, लेकिन मैं आपसे सहमत हूं। – JBSnorro
@rsbarro, नहीं! यह सिस्टम के लिए बिल्कुल ओवरराइड नहीं है। टाइप करें, क्योंकि प्रकारों को नेस्टेड किया जा सकता है .... – JBSnorro
माइक्रोसॉफ्ट कोड संविदा कहा गया है यह कभी नहीं अशक्त है।
// System.Reflection.MemberInfo
public virtual Type DeclaringType
{
get
{
Contract.Ensures(Contract.Result<Type>() != null, null, "Contract.Result<Type>() != null");
Type result;
return result;
}
}
तो रीशेपर कोड संविदाओं पर निर्भर करता है।
ठीक है, मैंने इसे कोड अनुबंध मंच पर पोस्ट किया है, http://social.msdn.microsoft.com/Forums/en-US/codecontracts/thread/fdf1436a-e843-408c -b932-c012e03e72cd – JBSnorro
क्या आपने पूर्ण स्वच्छ और पुनर्निर्माण किया था? अक्सर resharper अजीब चेतावनी डालता है क्योंकि यह हाल ही में अपने विश्लेषण को फिर से नहीं किया है। अन्यथा यह सिर्फ एक बग हो सकता है। – captncraig
@ सीएमपी, जेप मैंने किया। और मुझे यह अजीब लगता है कि यह एक बग होगा, क्योंकि NotNullAttribute जैसे गुण, मानक पुस्तकालयों को स्वचालित रूप से असाइन किए जाते हैं। अगर उस कोड में कोई बग था, तो इससे पहले देखा जाना चाहिए था। – JBSnorro
मेरा मतलब resharper के स्थिर विश्लेषण इंजन में एक बग था। – captncraig