मान लें कि मेरे पास एक कॉन्फ़िगरेशन प्रॉपर्टी है जो इस तरह दिखती है। ध्यान दें कि कोई डिफ़ॉल्ट मान नहीं है।कॉन्फ़िगरेशन वैलिडेटर कॉन्फ़िगरेशनप्रॉपर्टी के डिफ़ॉल्ट मान को क्यों मान्य करता है भले ही IsRequired सत्य है?
[ConfigurationProperty("x", IsRequired = true)]
[StringValidator(MinLength = 1)]
public string X
{
get { return (string)this["x"]; }
set { this["x"] = value; }
}
अब मैं इस तरह मेरे अनुभाग जोड़ें:
The value for the property 'x' is not valid. The error is: The string must be at least 1 characters long.
यह काम करता है अगर मैं विन्यास संपत्ति को बदलने इस तरह एक डिफ़ॉल्ट शामिल करने के लिए:
<mySection x="123" />
मैं इस त्रुटि मिलेगी :
[ConfigurationProperty("x", DefaultValue="abc", IsRequired = true)]
[StringValidator(MinLength = 1)]
public string X
{
get { return (string)this["x"]; }
set { this["x"] = value; }
}
इसका तात्पर्य यह है कि वैधकर्ता डिफ़ॉल्ट मान को मान्य करता है भले ही IsRequired सत्य है। इसका अर्थ यह भी है कि मुझे सत्यापन के लिए मेरे सभी गुणों पर एक डमी डिफ़ॉल्ट मान शामिल करना होगा, भले ही वे वास्तव में उपयोग नहीं किए जाएंगे।
क्या यह सिर्फ खराब डिज़ाइन है या क्या इस व्यवहार के लिए कोई वैध कारण है?
मुझे लगता है कि आप इस सवाल के बिंदु को याद कर चुके हैं। ओपी एक विन्यास "आवश्यक" विन्यास संपत्ति बनाने की कोशिश कर रहा है और इसलिए डिफ़ॉल्ट मान की आवश्यकता नहीं है। कॉन्फ़िगरेशन फ्रेमवर्क गुणों को तार करने के लिए विशेषताओं का उपयोग करते समय आपको ऐसा करने की अनुमति नहीं देता है। – Bronumski