2012-07-17 23 views
12

मैं अपने कस्टम MembershipProvider में इस कोड है:स्ट्रिंग को शून्य से तुलना करें - Resharper क्यों सोचता है कि यह हमेशा झूठा है?

public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) 
{ 
    if (config == null) 
     throw new ArgumentNullException("config"); 

    if (name == null) 
     name = "MyCustomMembershipProvider"; 
    ... 
} 

Resharper दूसरे के निशान अगर-वक्तव्य और मुझसे कहता है, यह हमेशा गलत पर मूल्यांकन करेगा।

resharper message

लेकिन क्यों यह हमेशा गलत पर मूल्यांकन होगा? मैं पैरामीटर के रूप में विधि को आसानी से पास कर सकता हूं।

क्या यह एक बग है या यहां रिशेर्पर है?

पीएस 1: मैं Resharper 6.1
पीएस 2 का उपयोग करता हूं: मुझे स्ट्रिंग का उपयोग करना पता है। INNullOrEmpty() वैसे भी यहां जाने का तरीका होगा। मैं सिर्फ उत्सुक हूँ।

+1

आपकी कक्षा किस कक्षा से प्राप्त कर रही है? क्या यह आपके या एक .NET ढांचे से एक है? –

+0

क्या यह आपका पूरा कोड है? मैं ReSharper 6.1 का उपयोग कर रहा हूं और उस संकेत को प्राप्त नहीं करता हूं। –

+0

मैं सदस्यता प्रदाता (सिस्टम.Web.Security में) – magnattic

उत्तर

15

शायद, name तर्क [NotNull] के रूप में चिह्नित किया गया है। आम बीसीएल कक्षाओं के लिए अनुबंध मेटाडाटा के साथ Resharper जहाजों।

+1

क्या कोई कारण है कि यह इस विधि पैरामीटर को इस तरह से चिह्नित करेगा? यह एक सार्वजनिक विधि है, जो किसी को इसे शून्य पैरामीटर के साथ कॉल करने से रोक देगा? – magnattic

+0

अनुबंध मेटाडाटा 100% सटीक नहीं है। यह व्यावहारिक होना है। मुझे लगता है कि यह एक अच्छी बात है। – usr

+0

दिलचस्प बात यह है कि प्रोवाइडरबेस ALSO [NotNull] कोड अनुबंध के बावजूद नाम के लिए एक पूर्ण जांच करता है। –