मुझे लगता है कि IValidatableObject
किसी ऑब्जेक्ट को इस तरह से सत्यापित करने के लिए उपयोग किया जाता है कि एक दूसरे के विरुद्ध गुणों की तुलना करें।मैं IValidatableObject का उपयोग कैसे करूं?
मैं अभी भी अलग-अलग गुणों को सत्यापित करने के लिए विशेषताओं को देखना चाहता हूं, लेकिन मैं कुछ मामलों में कुछ गुणों पर असफलताओं को अनदेखा करना चाहता हूं।
क्या मैं नीचे दिए गए मामले में गलत तरीके से इसका उपयोग करने की कोशिश कर रहा हूं? यदि नहीं, तो मैं इसे कैसे कार्यान्वित करूं?
public class ValidateMe : IValidatableObject
{
[Required]
public bool Enable { get; set; }
[Range(1, 5)]
public int Prop1 { get; set; }
[Range(1, 5)]
public int Prop2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!this.Enable)
{
/* Return valid result here.
* I don't care if Prop1 and Prop2 are out of range
* if the whole object is not "enabled"
*/
}
else
{
/* Check if Prop1 and Prop2 meet their range requirements here
* and return accordingly.
*/
}
}
}
मैं ऐसे परिदृश्य के बारे में सोच नहीं सकता जहां मैं इसका उपयोग करूंगा। क्या आप मुझे इसका उदाहरण दे सकते हैं कि आप इसका उपयोग कहां करेंगे? –
यदि आपके पास अपनी तालिका में कॉलम ट्रैक कर रहे हैं (जैसे उपयोगकर्ता ने इसे बनाया है)। डेटाबेस में यह आवश्यक है लेकिन आप इसे संदर्भित करने के लिए संदर्भ में SaveChanges में कदम उठाते हैं (डेवलपर्स को इसे स्पष्ट रूप से सेट करने के लिए याद रखने की आवश्यकता को समाप्त करना)। आप निश्चित रूप से, बचत से पहले मान्य करेंगे। तो आप आवश्यकतानुसार "निर्माता" कॉलम को चिह्नित नहीं करते हैं लेकिन अन्य सभी कॉलम/गुणों के विरुद्ध मान्य करते हैं। – MetalPhoenix
इस समाधान के साथ समस्या यह है कि अब आप अपनी ऑब्जेक्ट को उचित रूप से सत्यापित करने के लिए कॉलर पर निर्भर करते हैं। – cocogza