2013-02-24 19 views
6

आम तौर पर अगर मैं इस पड़ता था जाने के लिए कैसे:कोड विश्लेषण लेने कि एक तर्क कहा जाता विधि में मान्य किया गया था

public string Foo(string text) 
{ 
    return text.Substring(3); 
} 

मैं कोड विश्लेषण से एक CA1062: Validate arguments of public methods प्राप्त होंगे। यह इस तरह के रूप कोड को संशोधित करके निर्धारित किया गया है जाएगा:

public string Foo(string text) 
{ 
    if (text == null) 
     throw new ArgumentNullException("text"); 
    else if (string.IsNullEmptyOrWhiteSpace(text) 
     throw new ArgumentException("May not be empty or white space", "text") 
    else if (text.Length < 3) 
     throw new ArgumentException("Must be at least 3 characters long", "text"); 
    return text.Substring(3); 
} 

लेकिन अब मैं इस सत्यापन करने का एक और साधन का उपयोग करना चाहते:

public string Foo(string text) 
{ 
    Validator.WithArgument(text, "text").NotNullEmptyOrWhitespace().OfMinLength(3); 
    return text.Substring(3); 
} 

के बाद विधि तर्क कोड विश्लेषण नियम है सत्यापित करता है संतुष्ट है लेकिन आपको अभी भी CA1062 चेतावनी मिलती है। क्या इस तरह के मामलों के लिए मैन्युअल रूप से दबाने या उस विशिष्ट कोड विश्लेषण नियम को बंद किए बिना कोड विश्लेषण नियम को दबाने का कोई तरीका है?

उत्तर

2

ValidatedNotNullAttribute नामक एक विशेषता का उपयोग यह इंगित करने के लिए किया जा सकता है कि एक पैरामीटर एक सहायक विधि में मान्य है। हालांकि, you would need to add it to a parameter of the wrong method (WithArgument विधि) के रूप में, आपके NotNullEmptyOrWhitespace विधि के विपरीत, एक धाराप्रवाह सत्यापन API के लिए यह आवश्यक रूप से एक अच्छा विकल्प नहीं है)।